Home | History | Annotate | Download | only in IndustryStandard
      1 /*++
      2 
      3 Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
      4 This program and the accompanying materials
      5 are licensed and made available under the terms and conditions of the BSD License
      6 which accompanies this distribution.  The full text of the license may be found at
      7 http://opensource.org/licenses/bsd-license.php
      8 
      9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 
     12 Module Name:
     13 
     14   Smbios.h
     15 
     16 Abstract:
     17 
     18 --*/
     19 
     20 #ifndef _SMBIOS_TABLE_H_
     21 #define _SMBIOS_TABLE_H_
     22 
     23 #include "Tiano.h"
     24 
     25 //
     26 // Reference SMBIOS 2.6, chapter 3.1.2.
     27 // For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for
     28 // use by this specification.
     29 //
     30 #define SMBIOS_HANDLE_RESERVED_BEGIN 0xFF00
     31 
     32 //
     33 // Reference SMBIOS 2.6, chapter 3.1.3
     34 // Each text string is limited to 64 significant characters due to system MIF limitations
     35 //
     36 #define SMBIOS_STRING_MAX_LENGTH     64
     37 
     38 //
     39 // Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.43.
     40 // Upper-level software that interprets the SMBIOS structure-table should bypass an
     41 // Inactive structure just like a structure type that the software does not recognize.
     42 //
     43 #define SMBIOS_TYPE_INACTIVE         0x007E
     44 
     45 //
     46 // End-of-table type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.44.
     47 // The end-of-table indicator is used in the last physical structure in a table
     48 //
     49 #define SMBIOS_TYPE_END_OF_TABLE     0x007F
     50 
     51 #pragma pack(1)
     52 
     53 typedef UINT8 SMBIOS_TABLE_STRING;
     54 
     55 typedef struct {
     56   UINT8                 AnchorString[4];
     57   UINT8                 EntryPointStructureChecksum;
     58   UINT8                 EntryPointLength;
     59   UINT8                 MajorVersion;
     60   UINT8                 MinorVersion;
     61   UINT16                MaxStructureSize;
     62   UINT8                 EntryPointRevision;
     63   UINT8                 FormattedArea[5];
     64   UINT8                 IntermediateAnchorString[5];
     65   UINT8                 IntermediateChecksum;
     66   UINT16                TableLength;
     67   UINT32                TableAddress;
     68   UINT16                NumberOfSmbiosStructures;
     69   UINT8                 SmbiosBcdRevision;
     70 } SMBIOS_TABLE_STRUCTURE;
     71 
     72 typedef struct {
     73   UINT8                 Type;
     74   UINT8                 Length;
     75   UINT16                Handle;
     76 } SMBIOS_TABLE_HEADER;
     77 
     78 typedef struct {
     79   SMBIOS_TABLE_HEADER   Hdr;
     80   SMBIOS_TABLE_STRING   Vendor;
     81   SMBIOS_TABLE_STRING   BiosVersion;
     82   UINT16                BiosSegment;
     83   SMBIOS_TABLE_STRING   BiosReleaseDate;
     84   UINT8                 BiosSize;
     85   UINT64                BiosCharacteristics;
     86   UINT8                 BIOSCharacteristicsExtensionBytes[2];
     87   UINT8                 SystemBiosMajorRelease;
     88   UINT8                 SystemBiosMinorRelease;
     89   UINT8                 EmbeddedControllerFirmwareMajorRelease;
     90   UINT8                 EmbeddedControllerFirmwareMinorRelease;
     91 } SMBIOS_TABLE_TYPE0;
     92 
     93 typedef struct {
     94   SMBIOS_TABLE_HEADER   Hdr;
     95   SMBIOS_TABLE_STRING   Manufacturer;
     96   SMBIOS_TABLE_STRING   ProductName;
     97   SMBIOS_TABLE_STRING   Version;
     98   SMBIOS_TABLE_STRING   SerialNumber;
     99   EFI_GUID              Uuid;
    100   UINT8                 WakeUpType;
    101   SMBIOS_TABLE_STRING   SKUNumber;
    102   SMBIOS_TABLE_STRING   Family;
    103 } SMBIOS_TABLE_TYPE1;
    104 
    105 typedef struct {
    106   SMBIOS_TABLE_HEADER   Hdr;
    107   SMBIOS_TABLE_STRING   Manufacturer;
    108   SMBIOS_TABLE_STRING   ProductName;
    109   SMBIOS_TABLE_STRING   Version;
    110   SMBIOS_TABLE_STRING   SerialNumber;
    111   SMBIOS_TABLE_STRING   AssetTag;
    112   UINT8                 FeatureFlag;
    113   SMBIOS_TABLE_STRING   LocationInChassis;
    114   UINT16                ChassisHandle;
    115   UINT8                 BoardType;
    116   UINT8                 NumberOfContainedObjectHandles;
    117   UINT16                ContainedObjectHandles[1];
    118 } SMBIOS_TABLE_TYPE2;
    119 
    120 typedef struct {
    121   UINT8                 ContainedElementType;
    122   UINT8                 ContainedElementMinimum;
    123   UINT8                 ContainedElementMaximum;
    124 } CONTAINED_ELEMENT;
    125 
    126 typedef struct {
    127   SMBIOS_TABLE_HEADER   Hdr;
    128   SMBIOS_TABLE_STRING   Manufacturer;
    129   UINT8                 Type;
    130   SMBIOS_TABLE_STRING   Version;
    131   SMBIOS_TABLE_STRING   SerialNumber;
    132   SMBIOS_TABLE_STRING   AssetTag;
    133   UINT8                 BootupState;
    134   UINT8                 PowerSupplyState;
    135   UINT8                 ThermalState;
    136   UINT8                 SecurityStatus;
    137   UINT8                 OemDefined[4];
    138   UINT8                 Height;
    139   UINT8                 NumberofPowerCords;
    140   UINT8                 ContainedElementCount;
    141   UINT8                 ContainedElementRecordLength;
    142   CONTAINED_ELEMENT     ContainedElements[1];
    143 } SMBIOS_TABLE_TYPE3;
    144 
    145 typedef struct {
    146   SMBIOS_TABLE_HEADER   Hdr;
    147   UINT8                 Socket;
    148   UINT8                 ProcessorType;
    149   UINT8                 ProcessorFamily;
    150   SMBIOS_TABLE_STRING   ProcessorManufacture;
    151   UINT8                 ProcessorId[8];
    152   SMBIOS_TABLE_STRING   ProcessorVersion;
    153   UINT8                 Voltage;
    154   UINT16                ExternalClock;
    155   UINT16                MaxSpeed;
    156   UINT16                CurrentSpeed;
    157   UINT8                 Status;
    158   UINT8                 ProcessorUpgrade;
    159   UINT16                L1CacheHandle;
    160   UINT16                L2CacheHandle;
    161   UINT16                L3CacheHandle;
    162   SMBIOS_TABLE_STRING   SerialNumber;
    163   SMBIOS_TABLE_STRING   AssetTag;
    164   SMBIOS_TABLE_STRING   PartNumber;
    165   //
    166   // Add for smbios 2.5
    167   //
    168   UINT8                 CoreCount;
    169   UINT8                 EnabledCoreCount;
    170   UINT8                 ThreadCount;
    171   UINT16                ProcessorCharacteristics;
    172   //
    173   // Add for smbios 2.6
    174   //
    175   UINT16                ProcessorFamily2;
    176 } SMBIOS_TABLE_TYPE4;
    177 
    178 typedef struct {
    179   SMBIOS_TABLE_HEADER   Hdr;
    180   UINT8                 ErrDetectMethod;
    181   UINT8                 ErrCorrectCapability;
    182   UINT8                 SupportInterleave;
    183   UINT8                 CurrentInterleave;
    184   UINT8                 MaxMemoryModuleSize;
    185   UINT16                SupportSpeed;
    186   UINT16                SupportMemoryType;
    187   UINT8                 MemoryModuleVoltage;
    188   UINT8                 AssociatedMemorySlotNum;
    189   UINT16                MemoryModuleConfigHandles[1];
    190 //  UINT8                 EnableErrCorrectCapabilities;
    191 } SMBIOS_TABLE_TYPE5;
    192 
    193 typedef struct {
    194   SMBIOS_TABLE_HEADER   Hdr;
    195   SMBIOS_TABLE_STRING   SocketDesignation;
    196   UINT8                 BankConnections;
    197   UINT8                 CurrentSpeed;
    198   UINT16                CurrentMemoryType;
    199   UINT8                 InstalledSize;
    200   UINT8                 EnabledSize;
    201   UINT8                 ErrorStatus;
    202 } SMBIOS_TABLE_TYPE6;
    203 
    204 typedef struct {
    205   SMBIOS_TABLE_HEADER   Hdr;
    206   SMBIOS_TABLE_STRING   SocketDesignation;
    207   UINT16                CacheConfiguration;
    208   UINT16                MaximumCacheSize;
    209   UINT16                InstalledSize;
    210   UINT16                SupportedSRAMType;
    211   UINT16                CurrentSRAMType;
    212   UINT8                 CacheSpeed;
    213   UINT8                 ErrorCorrectionType;
    214   UINT8                 SystemCacheType;
    215   UINT8                 Associativity;
    216 } SMBIOS_TABLE_TYPE7;
    217 
    218 typedef struct {
    219   SMBIOS_TABLE_HEADER   Hdr;
    220   SMBIOS_TABLE_STRING   InternalReferenceDesignator;
    221   UINT8                 InternalConnectorType;
    222   SMBIOS_TABLE_STRING   ExternalReferenceDesignator;
    223   UINT8                 ExternalConnectorType;
    224   UINT8                 PortType;
    225 } SMBIOS_TABLE_TYPE8;
    226 
    227 typedef struct {
    228   SMBIOS_TABLE_HEADER   Hdr;
    229   SMBIOS_TABLE_STRING   SlotDesignation;
    230   UINT8                 SlotType;
    231   UINT8                 SlotDataBusWidth;
    232   UINT8                 CurrentUsage;
    233   UINT8                 SlotLength;
    234   UINT16                SlotID;
    235   UINT8                 SlotCharacteristics1;
    236   UINT8                 SlotCharacteristics2;
    237   //
    238   // Add for smbios 2.6
    239   //
    240   UINT16                SegmentGroupNum;
    241   UINT8                 BusNum;
    242   UINT8                 DevFuncNum;
    243 } SMBIOS_TABLE_TYPE9;
    244 
    245 typedef struct {
    246   UINT8                 DeviceType;
    247   SMBIOS_TABLE_STRING   DescriptionString;
    248 } DEVICE_STRUCT;
    249 
    250 typedef struct {
    251   SMBIOS_TABLE_HEADER   Hdr;
    252   DEVICE_STRUCT         Device[1];
    253 } SMBIOS_TABLE_TYPE10;
    254 
    255 typedef struct {
    256   SMBIOS_TABLE_HEADER   Hdr;
    257   UINT8                 StringCount;
    258 } SMBIOS_TABLE_TYPE11;
    259 
    260 typedef struct {
    261   SMBIOS_TABLE_HEADER   Hdr;
    262   UINT8                 StringCount;
    263 } SMBIOS_TABLE_TYPE12;
    264 
    265 typedef struct {
    266   SMBIOS_TABLE_HEADER   Hdr;
    267   UINT8                 InstallableLanguages;
    268   UINT8                 Flags;
    269   UINT8                 reserved[15];
    270   SMBIOS_TABLE_STRING   CurrentLanguages;
    271 } SMBIOS_TABLE_TYPE13;
    272 
    273 typedef struct {
    274   UINT8                 ItemType;
    275   UINT16                ItemHandle;
    276 } GROUP_STRUCT;
    277 
    278 typedef struct {
    279   SMBIOS_TABLE_HEADER   Hdr;
    280   SMBIOS_TABLE_STRING   GroupName;
    281   GROUP_STRUCT          Group[1];
    282 } SMBIOS_TABLE_TYPE14;
    283 
    284 typedef struct {
    285   UINT8                 LogType;
    286   UINT8                 DataFormatType;
    287 } EVENT_LOG_TYPE;
    288 
    289 typedef struct {
    290   SMBIOS_TABLE_HEADER   Hdr;
    291   UINT16                LogAreaLength;
    292   UINT16                LogHeaderStartOffset;
    293   UINT16                LogDataStartOffset;
    294   UINT8                 AccessMethod;
    295   UINT8                 LogStatus;
    296   UINT32                LogChangeToken;
    297   UINT32                AccessMethodAddress;
    298   UINT8                 LogHeaderFormat;
    299   UINT8                 NumberOfSupportedLogTypeDescriptors;
    300   UINT8                 LengthOfLogTypeDescriptor;
    301   EVENT_LOG_TYPE        EventLogTypeDescriptors[1];
    302 } SMBIOS_TABLE_TYPE15;
    303 
    304 typedef struct {
    305   SMBIOS_TABLE_HEADER   Hdr;
    306   UINT8                 Location;
    307   UINT8                 Use;
    308   UINT8                 MemoryErrorCorrection;
    309   UINT32                MaximumCapacity;
    310   UINT16                MemoryErrorInformationHandle;
    311   UINT16                NumberOfMemoryDevices;
    312 } SMBIOS_TABLE_TYPE16;
    313 
    314 typedef struct {
    315   SMBIOS_TABLE_HEADER   Hdr;
    316   UINT16                MemoryArrayHandle;
    317   UINT16                MemoryErrorInformationHandle;
    318   UINT16                TotalWidth;
    319   UINT16                DataWidth;
    320   UINT16                Size;
    321   UINT8                 FormFactor;
    322   UINT8                 DeviceSet;
    323   SMBIOS_TABLE_STRING   DeviceLocator;
    324   SMBIOS_TABLE_STRING   BankLocator;
    325   UINT8                 MemoryType;
    326   UINT16                TypeDetail;
    327   UINT16                Speed;
    328   SMBIOS_TABLE_STRING   Manufacturer;
    329   SMBIOS_TABLE_STRING   SerialNumber;
    330   SMBIOS_TABLE_STRING   AssetTag;
    331   SMBIOS_TABLE_STRING   PartNumber;
    332   //
    333   // Add for smbios 2.6
    334   //
    335   UINT8                 Attributes;
    336 } SMBIOS_TABLE_TYPE17;
    337 
    338 typedef struct {
    339   SMBIOS_TABLE_HEADER   Hdr;
    340   UINT8                 ErrorType;
    341   UINT8                 ErrorGranularity;
    342   UINT8                 ErrorOperation;
    343   UINT32                VendorSyndrome;
    344   UINT32                MemoryArrayErrorAddress;
    345   UINT32                DeviceErrorAddress;
    346   UINT32                ErrorResolution;
    347 } SMBIOS_TABLE_TYPE18;
    348 
    349 typedef struct {
    350   SMBIOS_TABLE_HEADER   Hdr;
    351   UINT32                StartingAddress;
    352   UINT32                EndingAddress;
    353   UINT16                MemoryArrayHandle;
    354   UINT8                 PartitionWidth;
    355 } SMBIOS_TABLE_TYPE19;
    356 
    357 typedef struct {
    358   SMBIOS_TABLE_HEADER   Hdr;
    359   UINT32                StartingAddress;
    360   UINT32                EndingAddress;
    361   UINT16                MemoryDeviceHandle;
    362   UINT16                MemoryArrayMappedAddressHandle;
    363   UINT8                 PartitionRowPosition;
    364   UINT8                 InterleavePosition;
    365   UINT8                 InterleavedDataDepth;
    366 } SMBIOS_TABLE_TYPE20;
    367 
    368 typedef struct {
    369   SMBIOS_TABLE_HEADER   Hdr;
    370   UINT8                 Type;
    371   UINT8                 Interface;
    372   UINT8                 NumberOfButtons;
    373 } SMBIOS_TABLE_TYPE21;
    374 
    375 typedef struct {
    376   SMBIOS_TABLE_HEADER   Hdr;
    377   SMBIOS_TABLE_STRING   Location;
    378   SMBIOS_TABLE_STRING   Manufacturer;
    379   SMBIOS_TABLE_STRING   ManufactureDate;
    380   SMBIOS_TABLE_STRING   SerialNumber;
    381   SMBIOS_TABLE_STRING   DeviceName;
    382   UINT8                 DeviceChemistry;
    383   UINT16                DeviceCapacity;
    384   UINT16                DesignVoltage;
    385   SMBIOS_TABLE_STRING   SBDSVersionNumber;
    386   UINT8                 MaximumErrorInBatteryData;
    387   UINT16                SBDSSerialNumber;
    388   UINT16                SBDSManufactureDate;
    389   SMBIOS_TABLE_STRING   SBDSDeviceChemistry;
    390   UINT8                 DesignCapacityMultiplier;
    391   UINT32                OEMSpecific;
    392 } SMBIOS_TABLE_TYPE22;
    393 
    394 typedef struct {
    395   SMBIOS_TABLE_HEADER   Hdr;
    396   UINT8                 Capabilities;
    397   UINT16                ResetCount;
    398   UINT16                ResetLimit;
    399   UINT16                TimerInterval;
    400   UINT16                Timeout;
    401 } SMBIOS_TABLE_TYPE23;
    402 
    403 typedef struct {
    404   SMBIOS_TABLE_HEADER   Hdr;
    405   UINT8                 HardwareSecuritySettings;
    406 } SMBIOS_TABLE_TYPE24;
    407 
    408 typedef struct {
    409   SMBIOS_TABLE_HEADER   Hdr;
    410   UINT8                 NextScheduledPowerOnMonth;
    411   UINT8                 NextScheduledPowerOnDayOfMonth;
    412   UINT8                 NextScheduledPowerOnHour;
    413   UINT8                 NextScheduledPowerOnMinute;
    414   UINT8                 NextScheduledPowerOnSecond;
    415 } SMBIOS_TABLE_TYPE25;
    416 
    417 typedef struct {
    418   SMBIOS_TABLE_HEADER   Hdr;
    419   SMBIOS_TABLE_STRING   Description;
    420   UINT8                 LocationAndStatus;
    421   UINT16                MaximumValue;
    422   UINT16                MinimumValue;
    423   UINT16                Resolution;
    424   UINT16                Tolerance;
    425   UINT16                Accuracy;
    426   UINT32                OEMDefined;
    427   UINT16                NominalValue;
    428 } SMBIOS_TABLE_TYPE26;
    429 
    430 typedef struct {
    431   SMBIOS_TABLE_HEADER   Hdr;
    432   UINT16                TemperatureProbeHandle;
    433   UINT8                 DeviceTypeAndStatus;
    434   UINT8                 CoolingUnitGroup;
    435   UINT32                OEMDefined;
    436   UINT16                NominalSpeed;
    437 } SMBIOS_TABLE_TYPE27;
    438 
    439 typedef struct {
    440   SMBIOS_TABLE_HEADER   Hdr;
    441   SMBIOS_TABLE_STRING   Description;
    442   UINT8                 LocationAndStatus;
    443   UINT16                MaximumValue;
    444   UINT16                MinimumValue;
    445   UINT16                Resolution;
    446   UINT16                Tolerance;
    447   UINT16                Accuracy;
    448   UINT32                OEMDefined;
    449   UINT16                NominalValue;
    450 } SMBIOS_TABLE_TYPE28;
    451 
    452 typedef struct {
    453   SMBIOS_TABLE_HEADER   Hdr;
    454   SMBIOS_TABLE_STRING   Description;
    455   UINT8                 LocationAndStatus;
    456   UINT16                MaximumValue;
    457   UINT16                MinimumValue;
    458   UINT16                Resolution;
    459   UINT16                Tolerance;
    460   UINT16                Accuracy;
    461   UINT32                OEMDefined;
    462   UINT16                NominalValue;
    463 } SMBIOS_TABLE_TYPE29;
    464 
    465 typedef struct {
    466   SMBIOS_TABLE_HEADER   Hdr;
    467   SMBIOS_TABLE_STRING   ManufacturerName;
    468   UINT8                 Connections;
    469 } SMBIOS_TABLE_TYPE30;
    470 
    471 typedef struct {
    472   SMBIOS_TABLE_HEADER   Hdr;
    473   UINT8                 Checksum;
    474   UINT8                 Reserved1;
    475   UINT16                Reserved2;
    476   UINT32                BisEntry16;
    477   UINT32                BisEntry32;
    478   UINT64                Reserved3;
    479   UINT32                Reserved4;
    480 } SMBIOS_TABLE_TYPE31;
    481 
    482 typedef struct {
    483   SMBIOS_TABLE_HEADER   Hdr;
    484   UINT8                 Reserved[6];
    485   UINT8                 BootStatus[1];
    486 } SMBIOS_TABLE_TYPE32;
    487 
    488 typedef struct {
    489   SMBIOS_TABLE_HEADER   Hdr;
    490   UINT8                 ErrorType;
    491   UINT8                 ErrorGranularity;
    492   UINT8                 ErrorOperation;
    493   UINT32                VendorSyndrome;
    494   UINT64                MemoryArrayErrorAddress;
    495   UINT64                DeviceErrorAddress;
    496   UINT32                ErrorResolution;
    497 } SMBIOS_TABLE_TYPE33;
    498 
    499 typedef struct {
    500   SMBIOS_TABLE_HEADER   Hdr;
    501   SMBIOS_TABLE_STRING   Description;
    502   UINT8                 Type;
    503   UINT32                Address;
    504   UINT8                 AddressType;
    505 } SMBIOS_TABLE_TYPE34;
    506 
    507 typedef struct {
    508   SMBIOS_TABLE_HEADER   Hdr;
    509   SMBIOS_TABLE_STRING   Description;
    510   UINT16                ManagementDeviceHandle;
    511   UINT16                ComponentHandle;
    512   UINT16                ThresholdHandle;
    513 } SMBIOS_TABLE_TYPE35;
    514 
    515 typedef struct {
    516   SMBIOS_TABLE_HEADER   Hdr;
    517   UINT16                LowerThresholdNonCritical;
    518   UINT16                UpperThresholdNonCritical;
    519   UINT16                LowerThresholdCritical;
    520   UINT16                UpperThresholdCritical;
    521   UINT16                LowerThresholdNonRecoverable;
    522   UINT16                UpperThresholdNonRecoverable;
    523 } SMBIOS_TABLE_TYPE36;
    524 
    525 typedef struct {
    526   UINT8                 DeviceLoad;
    527   UINT16                DeviceHandle;
    528 } MEMORY_DEVICE;
    529 
    530 typedef struct {
    531   SMBIOS_TABLE_HEADER   Hdr;
    532   UINT8                 ChannelType;
    533   UINT8                 MaximumChannelLoad;
    534   UINT8                 MemoryDeviceCount;
    535   MEMORY_DEVICE         MemoryDevice[1];
    536 } SMBIOS_TABLE_TYPE37;
    537 
    538 typedef struct {
    539   SMBIOS_TABLE_HEADER   Hdr;
    540   UINT8                 InterfaceType;
    541   UINT8                 IPMISpecificationRevision;
    542   UINT8                 I2CSlaveAddress;
    543   UINT8                 NVStorageDeviceAddress;
    544   UINT64                BaseAddress;
    545   UINT8                 BaseAddressModifier_InterruptInfo;
    546   UINT8                 InterruptNumber;
    547 } SMBIOS_TABLE_TYPE38;
    548 
    549 typedef struct {
    550   SMBIOS_TABLE_HEADER   Hdr;
    551   UINT8                 PowerUnitGroup;
    552   SMBIOS_TABLE_STRING   Location;
    553   SMBIOS_TABLE_STRING   DeviceName;
    554   SMBIOS_TABLE_STRING   Manufacturer;
    555   SMBIOS_TABLE_STRING   SerialNumber;
    556   SMBIOS_TABLE_STRING   AssetTagNumber;
    557   SMBIOS_TABLE_STRING   ModelPartNumber;
    558   SMBIOS_TABLE_STRING   RevisionLevel;
    559   UINT16                MaxPowerCapacity;
    560   UINT16                PowerSupplyCharacteristics;
    561   UINT16                InputVoltageProbeHandle;
    562   UINT16                CoolingDeviceHandle;
    563   UINT16                InputCurrentProbeHandle;
    564 } SMBIOS_TABLE_TYPE39;
    565 
    566 //
    567 // Add type 40 and type 41 for smbios 2.6
    568 //
    569 typedef struct {
    570   UINT8                   EntryLength;
    571   UINT16                  ReferencedHandle;
    572   UINT8                   ReferencedOffset;
    573   SMBIOS_TABLE_STRING     EntryString;
    574   UINT8                   Value[1];
    575 }ADDITIONAL_INFORMATION_ENTRY;
    576 
    577 typedef struct {
    578   SMBIOS_TABLE_HEADER                   Hdr;
    579   UINT8                                 NumberOfAdditionalInformationEntries;
    580   ADDITIONAL_INFORMATION_ENTRY          AdditionalInfoEntries[1];
    581 } SMBIOS_TABLE_TYPE40;
    582 
    583 typedef struct {
    584   SMBIOS_TABLE_HEADER     Hdr;
    585   SMBIOS_TABLE_STRING     ReferenceDesignation;
    586   UINT8                   DeviceType;
    587   UINT8                   DeviceTypeInstance;
    588   UINT16                  SegmentGroupNum;
    589   UINT8                   BusNum;
    590   UINT8                   DevFuncNum;
    591 } SMBIOS_TABLE_TYPE41;
    592 
    593 typedef struct {
    594   SMBIOS_TABLE_HEADER   Hdr;
    595 } SMBIOS_TABLE_TYPE126;
    596 
    597 typedef struct {
    598   SMBIOS_TABLE_HEADER   Hdr;
    599 } SMBIOS_TABLE_TYPE127;
    600 
    601 typedef union {
    602   SMBIOS_TABLE_HEADER   *Hdr;
    603   SMBIOS_TABLE_TYPE0    *Type0;
    604   SMBIOS_TABLE_TYPE1    *Type1;
    605   SMBIOS_TABLE_TYPE2    *Type2;
    606   SMBIOS_TABLE_TYPE3    *Type3;
    607   SMBIOS_TABLE_TYPE4    *Type4;
    608   SMBIOS_TABLE_TYPE5    *Type5;
    609   SMBIOS_TABLE_TYPE6    *Type6;
    610   SMBIOS_TABLE_TYPE7    *Type7;
    611   SMBIOS_TABLE_TYPE8    *Type8;
    612   SMBIOS_TABLE_TYPE9    *Type9;
    613   SMBIOS_TABLE_TYPE10   *Type10;
    614   SMBIOS_TABLE_TYPE11   *Type11;
    615   SMBIOS_TABLE_TYPE12   *Type12;
    616   SMBIOS_TABLE_TYPE13   *Type13;
    617   SMBIOS_TABLE_TYPE14   *Type14;
    618   SMBIOS_TABLE_TYPE15   *Type15;
    619   SMBIOS_TABLE_TYPE16   *Type16;
    620   SMBIOS_TABLE_TYPE17   *Type17;
    621   SMBIOS_TABLE_TYPE18   *Type18;
    622   SMBIOS_TABLE_TYPE19   *Type19;
    623   SMBIOS_TABLE_TYPE20   *Type20;
    624   SMBIOS_TABLE_TYPE21   *Type21;
    625   SMBIOS_TABLE_TYPE22   *Type22;
    626   SMBIOS_TABLE_TYPE23   *Type23;
    627   SMBIOS_TABLE_TYPE24   *Type24;
    628   SMBIOS_TABLE_TYPE25   *Type25;
    629   SMBIOS_TABLE_TYPE26   *Type26;
    630   SMBIOS_TABLE_TYPE27   *Type27;
    631   SMBIOS_TABLE_TYPE28   *Type28;
    632   SMBIOS_TABLE_TYPE29   *Type29;
    633   SMBIOS_TABLE_TYPE30   *Type30;
    634   SMBIOS_TABLE_TYPE31   *Type31;
    635   SMBIOS_TABLE_TYPE32   *Type32;
    636   SMBIOS_TABLE_TYPE33   *Type33;
    637   SMBIOS_TABLE_TYPE34   *Type34;
    638   SMBIOS_TABLE_TYPE35   *Type35;
    639   SMBIOS_TABLE_TYPE36   *Type36;
    640   SMBIOS_TABLE_TYPE37   *Type37;
    641   SMBIOS_TABLE_TYPE38   *Type38;
    642   SMBIOS_TABLE_TYPE39   *Type39;
    643   SMBIOS_TABLE_TYPE40   *Type40;
    644   SMBIOS_TABLE_TYPE41   *Type41;
    645   SMBIOS_TABLE_TYPE126  *Type126;
    646   SMBIOS_TABLE_TYPE127  *Type127;
    647   UINT8                 *Raw;
    648 } SMBIOS_STRUCTURE_POINTER;
    649 
    650 #pragma pack()
    651 
    652 #endif
    653