]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/IndustryStandard/SmBios.h
remove un-necessary #pragma pack(1) and clean up doxgen format.
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / SmBios.h
1 /** @file
2 Industry Standard Definitions of SMBIOS Table Specification v2.6
3
4 Copyright (c) 2006 - 2008, Intel Corporation All rights
5 reserved. This program and the accompanying materials are
6 licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef __SMBIOS_STANDARD_H__
16 #define __SMBIOS_STANDARD_H__
17 ///
18 /// Smbios Table Entry Point Structure
19 ///
20 typedef struct {
21 UINT8 AnchorString[4];
22 UINT8 EntryPointStructureChecksum;
23 UINT8 EntryPointLength;
24 UINT8 MajorVersion;
25 UINT8 MinorVersion;
26 UINT16 MaxStructureSize;
27 UINT8 EntryPointRevision;
28 UINT8 FormattedArea[5];
29 UINT8 IntermediateAnchorString[5];
30 UINT8 IntermediateChecksum;
31 UINT16 TableLength;
32 UINT32 TableAddress;
33 UINT16 NumberOfSmbiosStructures;
34 UINT8 SmbiosBcdRevision;
35 } SMBIOS_TABLE_ENTRY_POINT;
36
37 ///
38 /// The Smbios structure header
39 ///
40 typedef struct {
41 UINT8 Type;
42 UINT8 Length;
43 UINT16 Handle;
44 } SMBIOS_STRUCTURE;
45
46 typedef UINT8 SMBIOS_TABLE_STRING;
47
48 #pragma pack(1)
49 ///
50 /// BIOS Information (Type 0)
51 ///
52 typedef struct {
53 SMBIOS_STRUCTURE Hdr;
54 SMBIOS_TABLE_STRING Vendor;
55 SMBIOS_TABLE_STRING BiosVersion;
56 UINT16 BiosSegment;
57 SMBIOS_TABLE_STRING BiosReleaseDate;
58 UINT8 BiosSize;
59 UINT64 BiosCharacteristics;
60 UINT8 BIOSCharacteristicsExtensionBytes[2];
61 UINT8 SystemBiosMajorRelease;
62 UINT8 SystemBiosMinorRelease;
63 UINT8 EmbeddedControllerFirmwareMajorRelease;
64 UINT8 EmbeddedControllerFirmwareMinorRelease;
65 } SMBIOS_TABLE_TYPE0;
66 #pragma pack()
67
68 ///
69 /// System Information (Type 1)
70 ///
71 typedef struct {
72 SMBIOS_STRUCTURE Hdr;
73 SMBIOS_TABLE_STRING Manufacturer;
74 SMBIOS_TABLE_STRING ProductName;
75 SMBIOS_TABLE_STRING Version;
76 SMBIOS_TABLE_STRING SerialNumber;
77 EFI_GUID Uuid;
78 UINT8 WakeUpType;
79 SMBIOS_TABLE_STRING SKUNumber;
80 SMBIOS_TABLE_STRING Family;
81 } SMBIOS_TABLE_TYPE1;
82
83 #pragma pack(1)
84 ///
85 /// Base Board (or Module) Information (Type 2)
86 ///
87 typedef struct {
88 SMBIOS_STRUCTURE Hdr;
89 SMBIOS_TABLE_STRING Manufacturer;
90 SMBIOS_TABLE_STRING ProductName;
91 SMBIOS_TABLE_STRING Version;
92 SMBIOS_TABLE_STRING SerialNumber;
93 SMBIOS_TABLE_STRING AssetTag;
94 UINT8 FeatureFlag;
95 SMBIOS_TABLE_STRING LocationInChassis;
96 UINT16 ChassisHandle;
97 UINT8 BoardType;
98 UINT8 NumberOfContainedObjectHandles;
99 UINT16 ContainedObjectHandles[1];
100 } SMBIOS_TABLE_TYPE2;
101 #pragma pack()
102
103 typedef struct {
104 UINT8 ContainedElementType;
105 UINT8 ContainedElementMinimum;
106 UINT8 ContainedElementMaximum;
107 } CONTAINED_ELEMENT;
108
109 ///
110 /// System Enclosure or Chassis (Type 3)
111 ///
112 typedef struct {
113 SMBIOS_STRUCTURE Hdr;
114 SMBIOS_TABLE_STRING Manufacturer;
115 UINT8 Type;
116 SMBIOS_TABLE_STRING Version;
117 SMBIOS_TABLE_STRING SerialNumber;
118 SMBIOS_TABLE_STRING AssetTag;
119 UINT8 BootupState;
120 UINT8 PowerSupplyState;
121 UINT8 ThermalState;
122 UINT8 SecurityStatus;
123 UINT8 OemDefined[4];
124 UINT8 Height;
125 UINT8 NumberofPowerCords;
126 UINT8 ContainedElementCount;
127 UINT8 ContainedElementRecordLength;
128 CONTAINED_ELEMENT ContainedElements[1];
129 } SMBIOS_TABLE_TYPE3;
130
131 ///
132 /// Processor Information (Type 4)
133 ///
134 typedef struct {
135 SMBIOS_STRUCTURE Hdr;
136 UINT8 Socket;
137 UINT8 ProcessorType;
138 UINT8 ProcessorFamily;
139 SMBIOS_TABLE_STRING ProcessorManufacture;
140 UINT8 ProcessorId[8];
141 SMBIOS_TABLE_STRING ProcessorVersion;
142 UINT8 Voltage;
143 UINT16 ExternalClock;
144 UINT16 MaxSpeed;
145 UINT16 CurrentSpeed;
146 UINT8 Status;
147 UINT8 ProcessorUpgrade;
148 UINT16 L1CacheHandle;
149 UINT16 L2CacheHandle;
150 UINT16 L3CacheHandle;
151 SMBIOS_TABLE_STRING SerialNumber;
152 SMBIOS_TABLE_STRING AssetTag;
153 SMBIOS_TABLE_STRING PartNumber;
154 //
155 // Add for smbios 2.5
156 //
157 UINT8 CoreCount;
158 UINT8 EnabledCoreCount;
159 UINT8 ThreadCount;
160 UINT16 ProcessorCharacteristics;
161 //
162 // Add for smbios 2.6
163 //
164 UINT16 ProcessorFamily2;
165 } SMBIOS_TABLE_TYPE4;
166
167 #pragma pack(1)
168 ///
169 /// Memory Controller Information (Type 5, Obsolete)
170 ///
171 typedef struct {
172 SMBIOS_STRUCTURE Hdr;
173 UINT8 ErrDetectMethod;
174 UINT8 ErrCorrectCapability;
175 UINT8 SupportInterleave;
176 UINT8 CurrentInterleave;
177 UINT8 MaxMemoryModuleSize;
178 UINT16 SupportSpeed;
179 UINT16 SupportMemoryType;
180 UINT8 MemoryModuleVoltage;
181 UINT8 AssociatedMemorySlotNum;
182 UINT16 MemoryModuleConfigHandles[1];
183 } SMBIOS_TABLE_TYPE5;
184
185 ///
186 /// Memory Module Information (Type 6, Obsolete)
187 ///
188 typedef struct {
189 SMBIOS_STRUCTURE Hdr;
190 SMBIOS_TABLE_STRING SocketDesignation;
191 UINT8 BankConnections;
192 UINT8 CurrentSpeed;
193 UINT16 CurrentMemoryType;
194 UINT8 InstalledSize;
195 UINT8 EnabledSize;
196 UINT8 ErrorStatus;
197 } SMBIOS_TABLE_TYPE6;
198
199 ///
200 /// Cache Information (Type 7)
201 ///
202 typedef struct {
203 SMBIOS_STRUCTURE Hdr;
204 SMBIOS_TABLE_STRING SocketDesignation;
205 UINT16 CacheConfiguration;
206 UINT16 MaximumCacheSize;
207 UINT16 InstalledSize;
208 UINT16 SupportedSRAMType;
209 UINT16 CurrentSRAMType;
210 UINT8 CacheSpeed;
211 UINT8 ErrorCorrectionType;
212 UINT8 SystemCacheType;
213 UINT8 Associativity;
214 } SMBIOS_TABLE_TYPE7;
215 #pragma pack()
216
217 ///
218 /// Port Connector Information (Type 8)
219 ///
220 typedef struct {
221 SMBIOS_STRUCTURE Hdr;
222 SMBIOS_TABLE_STRING InternalReferenceDesignator;
223 UINT8 InternalConnectorType;
224 SMBIOS_TABLE_STRING ExternalReferenceDesignator;
225 UINT8 ExternalConnectorType;
226 UINT8 PortType;
227 } SMBIOS_TABLE_TYPE8;
228
229 #pragma pack(1)
230 ///
231 /// System Slots (Type 9)
232 ///
233 typedef struct {
234 SMBIOS_STRUCTURE Hdr;
235 SMBIOS_TABLE_STRING SlotDesignation;
236 UINT8 SlotType;
237 UINT8 SlotDataBusWidth;
238 UINT8 CurrentUsage;
239 UINT8 SlotLength;
240 UINT16 SlotID;
241 UINT8 SlotCharacteristics1;
242 UINT8 SlotCharacteristics2;
243 //
244 // Add for smbios 2.6
245 //
246 UINT16 SegmentGroupNum;
247 UINT8 BusNum;
248 UINT8 DevFuncNum;
249 } SMBIOS_TABLE_TYPE9;
250 #pragma pack()
251
252 typedef struct {
253 UINT8 DeviceType;
254 SMBIOS_TABLE_STRING DescriptionString;
255 } DEVICE_STRUCT;
256
257 ///
258 /// On Board Devices Information (Type 10, obsolete)
259 ///
260 typedef struct {
261 SMBIOS_STRUCTURE Hdr;
262 DEVICE_STRUCT Device[1];
263 } SMBIOS_TABLE_TYPE10;
264
265 ///
266 /// OEM Strings (Type 11)
267 ///
268 typedef struct {
269 SMBIOS_STRUCTURE Hdr;
270 UINT8 StringCount;
271 } SMBIOS_TABLE_TYPE11;
272
273 ///
274 /// System Configuration Options (Type 12)
275 ///
276 typedef struct {
277 SMBIOS_STRUCTURE Hdr;
278 UINT8 StringCount;
279 } SMBIOS_TABLE_TYPE12;
280
281 ///
282 /// BIOS Language Information (Type 13)
283 ///
284 typedef struct {
285 SMBIOS_STRUCTURE Hdr;
286 UINT8 InstallableLanguages;
287 UINT8 Flags;
288 UINT8 reserved[15];
289 SMBIOS_TABLE_STRING CurrentLanguages;
290 } SMBIOS_TABLE_TYPE13;
291
292 #pragma pack(1)
293 typedef struct {
294 UINT8 ItemType;
295 UINT16 ItemHandle;
296 } GROUP_STRUCT;
297
298 ///
299 /// Group Associations (Type 14)
300 ///
301 typedef struct {
302 SMBIOS_STRUCTURE Hdr;
303 SMBIOS_TABLE_STRING GroupName;
304 GROUP_STRUCT Group[1];
305 } SMBIOS_TABLE_TYPE14;
306
307 typedef struct {
308 UINT8 LogType;
309 UINT8 DataFormatType;
310 } EVENT_LOG_TYPE;
311
312 ///
313 /// System Event Log (Type 15)
314 ///
315 typedef struct {
316 SMBIOS_STRUCTURE Hdr;
317 UINT16 LogAreaLength;
318 UINT16 LogHeaderStartOffset;
319 UINT16 LogDataStartOffset;
320 UINT8 AccessMethod;
321 UINT8 LogStatus;
322 UINT32 LogChangeToken;
323 UINT32 AccessMethodAddress;
324 UINT8 LogHeaderFormat;
325 UINT8 NumberOfSupportedLogTypeDescriptors;
326 UINT8 LengthOfLogTypeDescriptor;
327 EVENT_LOG_TYPE EventLogTypeDescriptors[1];
328 } SMBIOS_TABLE_TYPE15;
329
330 ///
331 /// Physical Memory Array (Type 16)
332 ///
333 typedef struct {
334 SMBIOS_STRUCTURE Hdr;
335 UINT8 Location;
336 UINT8 Use;
337 UINT8 MemoryErrorCorrection;
338 UINT32 MaximumCapacity;
339 UINT16 MemoryErrorInformationHandle;
340 UINT16 NumberOfMemoryDevices;
341 } SMBIOS_TABLE_TYPE16;
342
343 ///
344 /// Memory Device (Type 17)
345 ///
346 typedef struct {
347 SMBIOS_STRUCTURE Hdr;
348 UINT16 MemoryArrayHandle;
349 UINT16 MemoryErrorInformationHandle;
350 UINT16 TotalWidth;
351 UINT16 DataWidth;
352 UINT16 Size;
353 UINT8 FormFactor;
354 UINT8 DeviceSet;
355 SMBIOS_TABLE_STRING DeviceLocator;
356 SMBIOS_TABLE_STRING BankLocator;
357 UINT8 MemoryType;
358 UINT16 TypeDetail;
359 UINT16 Speed;
360 SMBIOS_TABLE_STRING Manufacturer;
361 SMBIOS_TABLE_STRING SerialNumber;
362 SMBIOS_TABLE_STRING AssetTag;
363 SMBIOS_TABLE_STRING PartNumber;
364 //
365 // Add for smbios 2.6
366 //
367 UINT8 Attributes;
368 } SMBIOS_TABLE_TYPE17;
369
370 ///
371 /// 32-bit Memory Error Information (Type 18)
372 ///
373 typedef struct {
374 SMBIOS_STRUCTURE Hdr;
375 UINT8 ErrorType;
376 UINT8 ErrorGranularity;
377 UINT8 ErrorOperation;
378 UINT32 VendorSyndrome;
379 UINT32 MemoryArrayErrorAddress;
380 UINT32 DeviceErrorAddress;
381 UINT32 ErrorResolution;
382 } SMBIOS_TABLE_TYPE18;
383 #pragma pack()
384
385 ///
386 /// Memory Array Mapped Address (Type 19)
387 ///
388 typedef struct {
389 SMBIOS_STRUCTURE Hdr;
390 UINT32 StartingAddress;
391 UINT32 EndingAddress;
392 UINT16 MemoryArrayHandle;
393 UINT8 PartitionWidth;
394 } SMBIOS_TABLE_TYPE19;
395
396 ///
397 /// Memory Device Mapped Address (Type 20)
398 ///
399 typedef struct {
400 SMBIOS_STRUCTURE Hdr;
401 UINT32 StartingAddress;
402 UINT32 EndingAddress;
403 UINT16 MemoryDeviceHandle;
404 UINT16 MemoryArrayMappedAddressHandle;
405 UINT8 PartitionRowPosition;
406 UINT8 InterleavePosition;
407 UINT8 InterleavedDataDepth;
408 } SMBIOS_TABLE_TYPE20;
409
410 ///
411 /// Built-in Pointing Device (Type 21)
412 ///
413 typedef struct {
414 SMBIOS_STRUCTURE Hdr;
415 UINT8 Type;
416 UINT8 Interface;
417 UINT8 NumberOfButtons;
418 } SMBIOS_TABLE_TYPE21;
419
420 #pragma pack(1)
421 ///
422 /// Portable Battery (Type 22)
423 ///
424 typedef struct {
425 SMBIOS_STRUCTURE Hdr;
426 SMBIOS_TABLE_STRING Location;
427 SMBIOS_TABLE_STRING Manufacturer;
428 SMBIOS_TABLE_STRING ManufactureDate;
429 SMBIOS_TABLE_STRING SerialNumber;
430 SMBIOS_TABLE_STRING DeviceName;
431 UINT8 DeviceChemistry;
432 UINT16 DeviceCapacity;
433 UINT16 DesignVoltage;
434 SMBIOS_TABLE_STRING SBDSVersionNumber;
435 UINT8 MaximumErrorInBatteryData;
436 UINT16 SBDSSerialNumber;
437 UINT16 SBDSManufactureDate;
438 SMBIOS_TABLE_STRING SBDSDeviceChemistry;
439 UINT8 DesignCapacityMultiplier;
440 UINT32 OEMSpecific;
441 } SMBIOS_TABLE_TYPE22;
442
443 ///
444 /// System Reset (Type 23)
445 ///
446 typedef struct {
447 SMBIOS_STRUCTURE Hdr;
448 UINT8 Capabilities;
449 UINT16 ResetCount;
450 UINT16 ResetLimit;
451 UINT16 TimerInterval;
452 UINT16 Timeout;
453 } SMBIOS_TABLE_TYPE23;
454 #pragma pack()
455
456 ///
457 /// Hardware Security (Type 24)
458 ///
459 typedef struct {
460 SMBIOS_STRUCTURE Hdr;
461 UINT8 HardwareSecuritySettings;
462 } SMBIOS_TABLE_TYPE24;
463
464 ///
465 /// System Power Controls (Type 25)
466 ///
467 typedef struct {
468 SMBIOS_STRUCTURE Hdr;
469 UINT8 NextScheduledPowerOnMonth;
470 UINT8 NextScheduledPowerOnDayOfMonth;
471 UINT8 NextScheduledPowerOnHour;
472 UINT8 NextScheduledPowerOnMinute;
473 UINT8 NextScheduledPowerOnSecond;
474 } SMBIOS_TABLE_TYPE25;
475
476 ///
477 /// Voltage Probe (Type 26)
478 ///
479 typedef struct {
480 SMBIOS_STRUCTURE Hdr;
481 SMBIOS_TABLE_STRING Description;
482 UINT8 LocationAndStatus;
483 UINT16 MaximumValue;
484 UINT16 MinimumValue;
485 UINT16 Resolution;
486 UINT16 Tolerance;
487 UINT16 Accuracy;
488 UINT32 OEMDefined;
489 UINT16 NominalValue;
490 } SMBIOS_TABLE_TYPE26;
491
492 ///
493 /// Cooling Device (Type 27)
494 ///
495 typedef struct {
496 SMBIOS_STRUCTURE Hdr;
497 UINT16 TemperatureProbeHandle;
498 UINT8 DeviceTypeAndStatus;
499 UINT8 CoolingUnitGroup;
500 UINT32 OEMDefined;
501 UINT16 NominalSpeed;
502 } SMBIOS_TABLE_TYPE27;
503
504 ///
505 /// Temperature Probe (Type 28)
506 ///
507 typedef struct {
508 SMBIOS_STRUCTURE Hdr;
509 SMBIOS_TABLE_STRING Description;
510 UINT8 LocationAndStatus;
511 UINT16 MaximumValue;
512 UINT16 MinimumValue;
513 UINT16 Resolution;
514 UINT16 Tolerance;
515 UINT16 Accuracy;
516 UINT32 OEMDefined;
517 UINT16 NominalValue;
518 } SMBIOS_TABLE_TYPE28;
519
520 ///
521 /// Electrical Current Probe (Type 29)
522 ///
523 typedef struct {
524 SMBIOS_STRUCTURE Hdr;
525 SMBIOS_TABLE_STRING Description;
526 UINT8 LocationAndStatus;
527 UINT16 MaximumValue;
528 UINT16 MinimumValue;
529 UINT16 Resolution;
530 UINT16 Tolerance;
531 UINT16 Accuracy;
532 UINT32 OEMDefined;
533 UINT16 NominalValue;
534 } SMBIOS_TABLE_TYPE29;
535
536 ///
537 /// Out-of-Band Remote Access (Type 30)
538 ///
539 typedef struct {
540 SMBIOS_STRUCTURE Hdr;
541 SMBIOS_TABLE_STRING ManufacturerName;
542 UINT8 Connections;
543 } SMBIOS_TABLE_TYPE30;
544
545 ///
546 /// Boot Integrity Services (BIS) Entry Point (Type 31)
547 ///
548 typedef struct {
549 SMBIOS_STRUCTURE Hdr;
550 UINT8 Checksum;
551 UINT8 Reserved1;
552 UINT16 Reserved2;
553 UINT32 BisEntry16;
554 UINT32 BisEntry32;
555 UINT64 Reserved3;
556 UINT32 Reserved4;
557 } SMBIOS_TABLE_TYPE31;
558
559 ///
560 /// System Boot Information (Type 32)
561 ///
562 typedef struct {
563 SMBIOS_STRUCTURE Hdr;
564 UINT8 Reserved[6];
565 UINT8 BootStatus[1];
566 } SMBIOS_TABLE_TYPE32;
567
568 #pragma pack(1)
569 ///
570 /// 64-bit Memory Error Information (Type 33)
571 ///
572 typedef struct {
573 SMBIOS_STRUCTURE Hdr;
574 UINT8 ErrorType;
575 UINT8 ErrorGranularity;
576 UINT8 ErrorOperation;
577 UINT32 VendorSyndrome;
578 UINT64 MemoryArrayErrorAddress;
579 UINT64 DeviceErrorAddress;
580 UINT32 ErrorResolution;
581 } SMBIOS_TABLE_TYPE33;
582
583 ///
584 /// Management Device (Type 34)
585 ///
586 typedef struct {
587 SMBIOS_STRUCTURE Hdr;
588 SMBIOS_TABLE_STRING Description;
589 UINT8 Type;
590 UINT32 Address;
591 UINT8 AddressType;
592 } SMBIOS_TABLE_TYPE34;
593
594 ///
595 /// Management Device Component (Type 35)
596 ///
597 typedef struct {
598 SMBIOS_STRUCTURE Hdr;
599 SMBIOS_TABLE_STRING Description;
600 UINT16 ManagementDeviceHandle;
601 UINT16 ComponentHandle;
602 UINT16 ThresholdHandle;
603 } SMBIOS_TABLE_TYPE35;
604 #pragma pack()
605
606 ///
607 /// Management Device Threshold Data (Type 36)
608 ///
609 typedef struct {
610 SMBIOS_STRUCTURE Hdr;
611 UINT16 LowerThresholdNonCritical;
612 UINT16 UpperThresholdNonCritical;
613 UINT16 LowerThresholdCritical;
614 UINT16 UpperThresholdCritical;
615 UINT16 LowerThresholdNonRecoverable;
616 UINT16 UpperThresholdNonRecoverable;
617 } SMBIOS_TABLE_TYPE36;
618
619 #pragma pack(1)
620 typedef struct {
621 UINT8 DeviceLoad;
622 UINT16 DeviceHandle;
623 } MEMORY_DEVICE;
624
625 ///
626 /// Memory Channel (Type 37)
627 ///
628 typedef struct {
629 SMBIOS_STRUCTURE Hdr;
630 UINT8 ChannelType;
631 UINT8 MaximumChannelLoad;
632 UINT8 MemoryDeviceCount;
633 MEMORY_DEVICE MemoryDevice[1];
634 } SMBIOS_TABLE_TYPE37;
635 #pragma pack()
636
637 ///
638 /// IPMI Device Information (Type 38)
639 ///
640 typedef struct {
641 SMBIOS_STRUCTURE Hdr;
642 UINT8 InterfaceType;
643 UINT8 IPMISpecificationRevision;
644 UINT8 I2CSlaveAddress;
645 UINT8 NVStorageDeviceAddress;
646 UINT64 BaseAddress;
647 UINT8 BaseAddressModifier_InterruptInfo;
648 UINT8 InterruptNumber;
649 } SMBIOS_TABLE_TYPE38;
650
651 ///
652 /// System Power Supply (Type 39)
653 ///
654 typedef struct {
655 SMBIOS_STRUCTURE Hdr;
656 UINT8 PowerUnitGroup;
657 SMBIOS_TABLE_STRING Location;
658 SMBIOS_TABLE_STRING DeviceName;
659 SMBIOS_TABLE_STRING Manufacturer;
660 SMBIOS_TABLE_STRING SerialNumber;
661 SMBIOS_TABLE_STRING AssetTagNumber;
662 SMBIOS_TABLE_STRING ModelPartNumber;
663 SMBIOS_TABLE_STRING RevisionLevel;
664 UINT16 MaxPowerCapacity;
665 UINT16 PowerSupplyCharacteristics;
666 UINT16 InputVoltageProbeHandle;
667 UINT16 CoolingDeviceHandle;
668 UINT16 InputCurrentProbeHandle;
669 } SMBIOS_TABLE_TYPE39;
670
671 #pragma pack(1)
672 typedef struct {
673 UINT8 EntryLength;
674 UINT16 ReferencedHandle;
675 UINT8 ReferencedOffset;
676 SMBIOS_TABLE_STRING EntryString;
677 UINT8 Value[1];
678 }ADDITIONAL_INFORMATION_ENTRY;
679
680 ///
681 /// Additional Information (Type 40)
682 ///
683 typedef struct {
684 SMBIOS_STRUCTURE Hdr;
685 UINT8 NumberOfAdditionalInformationEntries;
686 ADDITIONAL_INFORMATION_ENTRY AdditionalInfoEntries[1];
687 } SMBIOS_TABLE_TYPE40;
688
689 ///
690 /// Onboard Devices Extended Information (Type 41)
691 ///
692 typedef struct {
693 SMBIOS_STRUCTURE Hdr;
694 SMBIOS_TABLE_STRING ReferenceDesignation;
695 UINT8 DeviceType;
696 UINT8 DeviceTypeInstance;
697 UINT16 SegmentGroupNum;
698 UINT8 BusNum;
699 UINT8 DevFuncNum;
700 } SMBIOS_TABLE_TYPE41;
701 #pragma pack()
702
703 ///
704 /// Inactive (Type 126)
705 ///
706 typedef struct {
707 SMBIOS_STRUCTURE Hdr;
708 } SMBIOS_TABLE_TYPE126;
709
710 ///
711 /// End-of-Table (Type 127)
712 ///
713 typedef struct {
714 SMBIOS_STRUCTURE Hdr;
715 } SMBIOS_TABLE_TYPE127;
716
717 ///
718 /// Union of all the possible SMBIOS record types
719 ///
720 typedef union {
721 SMBIOS_STRUCTURE *Hdr;
722 SMBIOS_TABLE_TYPE0 *Type0;
723 SMBIOS_TABLE_TYPE1 *Type1;
724 SMBIOS_TABLE_TYPE2 *Type2;
725 SMBIOS_TABLE_TYPE3 *Type3;
726 SMBIOS_TABLE_TYPE4 *Type4;
727 SMBIOS_TABLE_TYPE5 *Type5;
728 SMBIOS_TABLE_TYPE6 *Type6;
729 SMBIOS_TABLE_TYPE7 *Type7;
730 SMBIOS_TABLE_TYPE8 *Type8;
731 SMBIOS_TABLE_TYPE9 *Type9;
732 SMBIOS_TABLE_TYPE10 *Type10;
733 SMBIOS_TABLE_TYPE11 *Type11;
734 SMBIOS_TABLE_TYPE12 *Type12;
735 SMBIOS_TABLE_TYPE13 *Type13;
736 SMBIOS_TABLE_TYPE14 *Type14;
737 SMBIOS_TABLE_TYPE15 *Type15;
738 SMBIOS_TABLE_TYPE16 *Type16;
739 SMBIOS_TABLE_TYPE17 *Type17;
740 SMBIOS_TABLE_TYPE18 *Type18;
741 SMBIOS_TABLE_TYPE19 *Type19;
742 SMBIOS_TABLE_TYPE20 *Type20;
743 SMBIOS_TABLE_TYPE21 *Type21;
744 SMBIOS_TABLE_TYPE22 *Type22;
745 SMBIOS_TABLE_TYPE23 *Type23;
746 SMBIOS_TABLE_TYPE24 *Type24;
747 SMBIOS_TABLE_TYPE25 *Type25;
748 SMBIOS_TABLE_TYPE26 *Type26;
749 SMBIOS_TABLE_TYPE27 *Type27;
750 SMBIOS_TABLE_TYPE28 *Type28;
751 SMBIOS_TABLE_TYPE29 *Type29;
752 SMBIOS_TABLE_TYPE30 *Type30;
753 SMBIOS_TABLE_TYPE31 *Type31;
754 SMBIOS_TABLE_TYPE32 *Type32;
755 SMBIOS_TABLE_TYPE33 *Type33;
756 SMBIOS_TABLE_TYPE34 *Type34;
757 SMBIOS_TABLE_TYPE35 *Type35;
758 SMBIOS_TABLE_TYPE36 *Type36;
759 SMBIOS_TABLE_TYPE37 *Type37;
760 SMBIOS_TABLE_TYPE38 *Type38;
761 SMBIOS_TABLE_TYPE39 *Type39;
762 SMBIOS_TABLE_TYPE40 *Type40;
763 SMBIOS_TABLE_TYPE41 *Type41;
764 SMBIOS_TABLE_TYPE126 *Type126;
765 SMBIOS_TABLE_TYPE127 *Type127;
766 UINT8 *Raw;
767 } SMBIOS_STRUCTURE_POINTER;
768
769 #endif