Event-log location, access, status, and supported event descriptors.
lazybiosGetType15 returns a lazybiosType15Array_t holding every matching structure. Iterate entries using count. A non-NULL result whose count is zero means the table contains no structure of this type; NULL means the arguments were unusable or an allocation failed. Release the set with lazybiosFreeType15, or assign it to ctx->Type15 and let lazybiosCleanup own it.
Every record carries its own SMBIOS handle and the structure length the firmware reported.
Encoded fields are decoded during parsing into decoded, which mirrors the raw member names (access_method, data_address, gpnv_handle, index_address, among others). The raw value stays alongside it, so both the encoding and its meaning are available.
Decode access_method with decoded.access_method. For indexed I/O methods, use decoded.index_address and decoded.data_address to split the packed DWORD. Memory-mapped access uses the complete DWORD as a physical address. GPNV access uses decoded.gpnv_handle.
decoded.log_status reports whether the log area is valid and full. log_change_token changes whenever the event log changes; zero means that the token mechanism is not implemented. These fields can be dynamic and might not be current when read through the SMBIOS table interface.
SMBIOS 2.1 added the log header format and supported event descriptor list. Decode the header with decoded.log_header_format. Each lazybiosType15LogTypeDescriptor_t contains an event type and the standard format of its variable data, decoded with decoded.log_type and decoded.variable_data_format_type.
The parser uses length_of_each_log_type_descriptor as the stride between records and does not assume that future descriptors remain two bytes long. It exposes the two fields defined by SMBIOS 3.9 and ignores extension bytes. An incomplete list or descriptor length below two bytes makes the descriptor array absent while preserving the encoded count and length fields.
The Type 15 structure array and each nested descriptor array are allocated by the parser. Release the complete result with lazybiosFreeType15 or assign it to lazybiosCTX::Type15 and use lazybiosCleanup.