BIOS identity, ROM capacity, release data, and firmware capability interpretation.
lazybiosGetType0 returns a lazybiosType0Array_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 lazybiosFreeType0, or assign it to ctx->Type0 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 and stored in decoded, which mirrors the raw member names (extended_rom_size, extended_rom_size_unit). The raw value stays alongside it, so both the encoding and its meaning are available.
Vendor, version, release date, starting segment, legacy ROM size, and BIOS characteristics originate in the base structure. Firmware characteristics extension byte 1 requires SMBIOS 2.1 and extension byte 2 requires SMBIOS 2.3. The extension array contains only these two defined bytes; later fixed fields are not included in its count. Platform and embedded-controller release fields require SMBIOS 2.4 or newer. Extended ROM size requires SMBIOS 3.1 or newer when the legacy ROM-size byte selects the extended field.
A platform major/minor pair of 0xFF means that platform release reporting is unsupported. An embedded-controller release byte of 0xFF means that the corresponding release component is unavailable. These fields retain their encoded bytes but report LAZYBIOS_FIELD_ABSENT.
rom_size contains the decoded legacy size in KiB when that representation applies. When the legacy byte is 0xFF, check extended_rom_size and use decoded.extended_rom_size to separate its numeric value from the MiB, GiB, or reserved unit encoding. The parser also initializes the unit member whenever extended ROM size is selected. A zero bios_starting_segment is preserved and marked absent because SMBIOS defines it as not applicable, including on UEFI systems.
Use decoded.characteristics for the main bit field. The extension array can contain multiple bytes; use decoded.characteristics_ext_byte1 and decoded.characteristics_ext_byte2 only when the corresponding byte exists according to firmware_char_ext_bytes_count.