[e16e8f2] | 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 | |
---|