Why SMBIOS of the same machine reported by Linux differs from reported by Windows?

Viewed 107

Recently I was porting dmidecode to Windows, and was looking into SMBIOS table. I thought that will be straightforward task, just remove Linux dependent stuff from dmidecode to make it compile on windows, and instead of getting SMBIOS from memory get it with GetSystemFirmwareTable('RSMB', 0, smBiosData, size1); and feed it to other functions.

But there is a problem, GetSystemFirmwareTable reports not full SMBIOS, it is truncated at the beginning and lack some values in the header, like number of structures(I have ver 2.8 other can differ). the rest of SMBIOS is the same and can be decoded by dmidecode. Can someone explain why is that? Or am I wrong and doing it wrong(reading SMBIOS in Windows)?

The difference:

SMBIOS from Linux(small part):

5F 53 4D 5F DF 1F 02 08 9A 00 00 00 00 00 00 00 5F 44 4D 49 5F 35 A7 09 20 00 00 00 3B 00 28 00 00 1A 00 00 01 02 00 F0 03 FF 80 98 FB 7F 01 00 00 00 03 0D 05 11 FF FF 20 00 41 6D 65 72 69 63 61 6E 20 4D 65 67 61 74 72 65 6E 64 73 20 49 6E 74 65 72 6E 61 74 69 6F 6E 61 6C 2C 20 4C 4C 43 2E 00 31 2E 44 36 00 30 31 2F 31 32 2F 32 30 32 31 00 00 01 1B 01 00 01 02 03 04 57 87 C5 95 08 81 18 D9 A7 58 00 D8 61 A1 F2 74 06 05 06 4D 69 63 72 6F 2D 53 74 61 72 20 49 6E 74 65 72 6E 61 74 69 6F 6E 61 6C 20 43 6F 2E 2C 20 4C 74 64 2E

SMBIOS from Windows(small part):

00 02 08 00 A7 09 00 00 00 1A 00 00 01 02 00 F0 03 FF 80 98 FB 7F 01 00 00 00 03 0D 05 11 FF FF 20 00 41 6D 65 72 69 63 61 6E 20 4D 65 67 61 74 72 65 6E 64 73 20 49 6E 74 65 72 6E 61 74 69 6F 6E 61 6C 2C 20 4C 4C 43 2E 00 31 2E 44 36 00 30 31 2F 31 32 2F 32 30 32 31 00 00 01 1B 01 00 01 02 03 04 57 87 C5 95 08 81 18 D9 A7 58 00 D8 61 A1 F2 74 06 05 06 4D 69 63 72 6F 2D 53 74 61 72 20 49 6E 74 65 72 6E 61 74 69 6F 6E 61 6C 20 43 6F 2E 2C 20 4C 74 64 2E
0 Answers
Related