Physical memory array placement, purpose, capacity, and error handling.
lazybiosGetType16 returns a lazybiosType16Array_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 lazybiosFreeType16, or assign it to ctx->Type16 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 (location, maximum_capacity, memory_error_correction, use). The raw value stays alongside it, so both the encoding and its meaning are available.
Decode location, use, and memory_error_correction with decoded.location, decoded.use, and decoded.memory_error_correction. These values describe the physical placement, function, and primary hardware error handling of the complete array.
maximum_capacity is expressed in KiB. The value 0x80000000 selects the SMBIOS 2.7 extended_maximum_capacity field, which is expressed in bytes. decoded.maximum_capacity applies this selection and returns a byte count. Extended capacity is encoded but unused when the legacy field is not 0x80000000.
memory_error_information_handle references a Type 18 or Type 33 error record. 0xFFFE means that the system does not provide an error-information structure. 0xFFFF means that no error was detected. Both values are preserved and report LAZYBIOS_FIELD_ABSENT because neither references an error-information structure.
The returned structure array is allocated by the parser. Release it with lazybiosFreeType16 or assign it to lazybiosCTX::Type16 and use lazybiosCleanup.