lazybios 3.0.0
Lightweight SMBIOS/DMI parsing library
Loading...
Searching...
No Matches
Type 17: Memory Device Guide

Memory-slot identity, capacity, speed, technology, voltage, and component IDs.

Result set and ownership

lazybiosGetType17 returns a lazybiosType17Array_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 lazybiosFreeType17, or assign it to ctx->Type17 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 (form_factor, memory_technology, memory_type). The raw value stays alongside it, so both the encoding and its meaning are available.

Legacy and extended capacity

Interpret the raw size member before displaying capacity:

  • 0 indicates that no memory device is installed.
  • 0xFFFF indicates an unknown size.
  • Bit 15 selects KiB units for the remaining value.
  • 0x7FFF selects extended_size, whose low 31 bits are MiB.
uint32_t memory_device_size_mib(const lazybiosType17_t* memory) {
if (memory->size == 0x7FFF) return memory->extended_size & 0x7FFFFFFF;
if (memory->size == 0 || memory->size == 0xFFFF || (memory->size & 0x8000)) return 0;
return memory->size;
}

Speed fields

speed and configured_memory_speed are the base MT/s fields. SMBIOS 3.3 adds extended alternatives for larger values. Use decoded.extended_speed for either extended speed field when its corresponding base representation selects the extended value.

Identity and placement

Device and bank locators describe physical placement. Manufacturer, serial number, asset tag, part number, and firmware version are firmware-provided strings. physical_memory_array_handle associates the device with a Type 16 structure; it is not an array index. A 0xFFFF physical-array handle is absent. The error-information handle is also absent for 0xFFFE (no error structure supplied) and 0xFFFF (no error detected), while retaining the raw value.

Classification

Decode form factor with decoded.form_factor, memory type with decoded.memory_type, type-detail flags with decoded.type_detail, memory technology with decoded.memory_technology, and operating modes with decoded.memory_operating_mode_capability.

Width and voltage

Total width includes error-correction bits while data width excludes them. The minimum, maximum, and configured voltage fields are expressed in mV when present. Check LAZYBIOS_FIELD_STATUS before using any version-dependent value.

Memory regions and identifiers

Volatile, non-volatile, cache, and logical capacities are byte counts in the SMBIOS 3.2 fields. The available formatter helpers handle volatile, non-volatile, and cache capacities. Manufacturer, product, PMIC0, and RCD identifiers remain numeric values and can be formatted with the corresponding Type 17 helper.

See also
Type 17: Memory Device Information