Cooling-device classification, health, redundancy, and speed information.
lazybiosGetType27 returns a lazybiosType27Array_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 lazybiosFreeType27, or assign it to ctx->Type27 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 (device_type, status). The raw value stays alongside it, so both the encoding and its meaning are available.
device_type_and_status combines a five-bit cooling-device type and a three-bit device status. Decode them independently with decoded.device_type and decoded.status.
temperature_probe_handle identifies the Type 28 probe monitoring the cooling device. A zero cooling_unit_group means that the device is not a member of a redundant cooling unit. Matching nonzero group values identify cooling devices in the same redundant unit. A temperature-probe handle of 0xFFFF is preserved and marked absent.
nominal_speed is expressed in revolutions per minute. The raw value 0x8000 means that the speed is unknown or that the device does not rotate. The description field is available in SMBIOS 2.7 and newer when the formatted structure is at least 0Fh bytes long.
Release the returned array and its description strings with lazybiosFreeType27, or assign it to lazybiosCTX::Type27 and use lazybiosCleanup.