1 #ifndef _LIB_SMBIOS_H 2 #define _LIB_SMBIOS_H 3 /*++ 4 5 Copyright (c) 2000 Intel Corporation 6 7 Module Name: 8 9 LibSmbios.h 10 11 Abstract: 12 13 Lib include for SMBIOS services. Used to get system serial number and GUID 14 15 Revision History 16 17 --*/ 18 19 // 20 // Define SMBIOS tables. 21 // 22 #pragma pack(1) 23 typedef struct { 24 UINT8 AnchorString[4]; 25 UINT8 EntryPointStructureChecksum; 26 UINT8 EntryPointLength; 27 UINT8 MajorVersion; 28 UINT8 MinorVersion; 29 UINT16 MaxStructureSize; 30 UINT8 EntryPointRevision; 31 UINT8 FormattedArea[5]; 32 UINT8 IntermediateAnchorString[5]; 33 UINT8 IntermediateChecksum; 34 UINT16 TableLength; 35 UINT32 TableAddress; 36 UINT16 NumberOfSmbiosStructures; 37 UINT8 SmbiosBcdRevision; 38 } SMBIOS_STRUCTURE_TABLE; 39 40 // 41 // Please note that SMBIOS structures can be odd byte aligned since the 42 // unformated section of each record is a set of arbitrary size strings. 43 // 44 45 typedef struct { 46 UINT8 Type; 47 UINT8 Length; 48 UINT8 Handle[2]; 49 } SMBIOS_HEADER; 50 51 typedef UINT8 SMBIOS_STRING; 52 53 typedef struct { 54 SMBIOS_HEADER Hdr; 55 SMBIOS_STRING Vendor; 56 SMBIOS_STRING BiosVersion; 57 UINT8 BiosSegment[2]; 58 SMBIOS_STRING BiosReleaseDate; 59 UINT8 BiosSize; 60 UINT8 BiosCharacteristics[8]; 61 } SMBIOS_TYPE0; 62 63 typedef struct { 64 SMBIOS_HEADER Hdr; 65 SMBIOS_STRING Manufacturer; 66 SMBIOS_STRING ProductName; 67 SMBIOS_STRING Version; 68 SMBIOS_STRING SerialNumber; 69 70 // 71 // always byte copy this data to prevent alignment faults! 72 // 73 EFI_GUID Uuid; 74 75 UINT8 WakeUpType; 76 } SMBIOS_TYPE1; 77 78 typedef struct { 79 SMBIOS_HEADER Hdr; 80 SMBIOS_STRING Manufacturer; 81 SMBIOS_STRING ProductName; 82 SMBIOS_STRING Version; 83 SMBIOS_STRING SerialNumber; 84 } SMBIOS_TYPE2; 85 86 typedef struct { 87 SMBIOS_HEADER Hdr; 88 SMBIOS_STRING Manufacturer; 89 UINT8 Type; 90 SMBIOS_STRING Version; 91 SMBIOS_STRING SerialNumber; 92 SMBIOS_STRING AssetTag; 93 UINT8 BootupState; 94 UINT8 PowerSupplyState; 95 UINT8 ThermalState; 96 UINT8 SecurityStatus; 97 UINT8 OemDefined[4]; 98 } SMBIOS_TYPE3; 99 100 typedef struct { 101 SMBIOS_HEADER Hdr; 102 UINT8 Socket; 103 UINT8 ProcessorType; 104 UINT8 ProcessorFamily; 105 SMBIOS_STRING ProcessorManufacture; 106 UINT8 ProcessorId[8]; 107 SMBIOS_STRING ProcessorVersion; 108 UINT8 Voltage; 109 UINT8 ExternalClock[2]; 110 UINT8 MaxSpeed[2]; 111 UINT8 CurrentSpeed[2]; 112 UINT8 Status; 113 UINT8 ProcessorUpgrade; 114 UINT8 L1CacheHandle[2]; 115 UINT8 L2CacheHandle[2]; 116 UINT8 L3CacheHandle[2]; 117 } SMBIOS_TYPE4; 118 119 typedef union { 120 SMBIOS_HEADER *Hdr; 121 SMBIOS_TYPE0 *Type0; 122 SMBIOS_TYPE1 *Type1; 123 SMBIOS_TYPE2 *Type2; 124 SMBIOS_TYPE3 *Type3; 125 SMBIOS_TYPE4 *Type4; 126 UINT8 *Raw; 127 } SMBIOS_STRUCTURE_POINTER; 128 #pragma pack() 129 130 131 #endif 132 133