]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/LibSmbios.h
add comments to function declarations and definitions and updated to match coding...
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / SmbiosView / LibSmbios.h
CommitLineData
5d73d92f 1/** @file\r
2 Lib include for SMBIOS services. Used to get system serial number and GUID\r
3\r
a1d4bfcc 4 Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved.<BR>\r
5d73d92f 5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
a1d4bfcc 15#ifndef _LIB_SMBIOS_H_\r
16#define _LIB_SMBIOS_H_\r
5d73d92f 17\r
18//\r
19// Define SMBIOS tables.\r
20//\r
21#pragma pack(1)\r
22\r
23typedef UINT8 SMBIOS_STRING;\r
24\r
25typedef struct {\r
26 UINT8 AnchorString[4];\r
27 UINT8 EntryPointStructureChecksum;\r
28 UINT8 EntryPointLength;\r
29 UINT8 MajorVersion;\r
30 UINT8 MinorVersion;\r
31 UINT16 MaxStructureSize;\r
32 UINT8 EntryPointRevision;\r
33 UINT8 FormattedArea[5];\r
34 UINT8 IntermediateAnchorString[5];\r
35 UINT8 IntermediateChecksum;\r
36 UINT16 TableLength;\r
37 UINT32 TableAddress;\r
38 UINT16 NumberOfSmbiosStructures;\r
39 UINT8 SmbiosBcdRevision;\r
40} SMBIOS_STRUCTURE_TABLE;\r
41\r
42//\r
43// Please note that SMBIOS structures can be odd byte aligned since the\r
44// unformated section of each record is a set of arbitrary size strings.\r
45//\r
46typedef struct {\r
47 UINT8 Type;\r
48 UINT8 Length;\r
49 UINT16 Handle;\r
50} SMBIOS_HEADER;\r
51\r
52typedef struct {\r
53 SMBIOS_HEADER Hdr;\r
54 SMBIOS_STRING Vendor;\r
55 SMBIOS_STRING BiosVersion;\r
56 UINT16 BiosSegment;\r
57 SMBIOS_STRING BiosReleaseDate;\r
58 UINT8 BiosSize;\r
59 UINT64 BiosCharacteristics;\r
60 UINT8 BIOSCharacteristicsExtensionBytes[2];\r
61 UINT8 SystemBiosMajorRelease;\r
62 UINT8 SystemBiosMinorRelease;\r
63 UINT8 EmbeddedControllerFirmwareMajorRelease;\r
64 UINT8 EmbeddedControllerFirmwareMinorRelease;\r
65} SMBIOS_TYPE0;\r
66\r
67typedef struct {\r
68 SMBIOS_HEADER Hdr;\r
69 SMBIOS_STRING Manufacturer;\r
70 SMBIOS_STRING ProductName;\r
71 SMBIOS_STRING Version;\r
72 SMBIOS_STRING SerialNumber;\r
73 EFI_GUID Uuid;\r
74 UINT8 WakeUpType;\r
75 SMBIOS_STRING SKUNumber;\r
76 SMBIOS_STRING Family;\r
77} SMBIOS_TYPE1;\r
78\r
79typedef struct {\r
80 SMBIOS_HEADER Hdr;\r
81 SMBIOS_STRING Manufacturer;\r
82 SMBIOS_STRING ProductName;\r
83 SMBIOS_STRING Version;\r
84 SMBIOS_STRING SerialNumber;\r
85 SMBIOS_STRING AssetTag;\r
86 UINT8 FeatureFlag;\r
87 SMBIOS_STRING LocationInChassis;\r
88 UINT16 ChassisHandle;\r
89 UINT8 BoardType;\r
90 UINT8 NumberOfContainedObjectHandles;\r
91 UINT16 ContainedObjectHandles[1];\r
92} SMBIOS_TYPE2;\r
93\r
94typedef struct {\r
95 UINT8 ContainedElementType;\r
96 UINT8 ContainedElementMinimum;\r
97 UINT8 ContainedElementMaximum;\r
98} CONTAINED_ELEMENT;\r
99\r
100typedef struct {\r
101 SMBIOS_HEADER Hdr;\r
102 SMBIOS_STRING Manufacturer;\r
103 UINT8 Type;\r
104 SMBIOS_STRING Version;\r
105 SMBIOS_STRING SerialNumber;\r
106 SMBIOS_STRING AssetTag;\r
107 UINT8 BootupState;\r
108 UINT8 PowerSupplyState;\r
109 UINT8 ThermalState;\r
110 UINT8 SecurityStatus;\r
111 UINT8 OemDefined[4];\r
112 UINT8 Height;\r
113 UINT8 NumberofPowerCords;\r
114 UINT8 ContainedElementCount;\r
115 UINT8 ContainedElementRecordLength;\r
116 CONTAINED_ELEMENT ContainedElements[1];\r
117} SMBIOS_TYPE3;\r
118\r
119typedef struct {\r
120 SMBIOS_HEADER Hdr;\r
121 UINT8 Socket;\r
122 UINT8 ProcessorType;\r
123 UINT8 ProcessorFamily;\r
124 SMBIOS_STRING ProcessorManufacture;\r
125 UINT8 ProcessorId[8];\r
126 SMBIOS_STRING ProcessorVersion;\r
127 UINT8 Voltage;\r
128 UINT16 ExternalClock;\r
129 UINT16 MaxSpeed;\r
130 UINT16 CurrentSpeed;\r
131 UINT8 Status;\r
132 UINT8 ProcessorUpgrade;\r
133 UINT16 L1CacheHandle;\r
134 UINT16 L2CacheHandle;\r
135 UINT16 L3CacheHandle;\r
136 SMBIOS_STRING SerialNumber;\r
137 SMBIOS_STRING AssetTag;\r
138 SMBIOS_STRING PartNumber;\r
139 //\r
140 // Add for smbios 2.5\r
141 //\r
142 UINT8 CoreCount;\r
143 UINT8 EnabledCoreCount;\r
144 UINT8 ThreadCount;\r
145 UINT16 ProcessorCharacteristics;\r
146 //\r
147 // Add for smbios 2.6\r
148 //\r
149 UINT16 ProcessorFamily2;\r
150} SMBIOS_TYPE4;\r
151\r
152typedef struct {\r
153 SMBIOS_HEADER Hdr;\r
154 UINT8 ErrDetectMethod;\r
155 UINT8 ErrCorrectCapability;\r
156 UINT8 SupportInterleave;\r
157 UINT8 CurrentInterleave;\r
158 UINT8 MaxMemoryModuleSize;\r
159 UINT16 SupportSpeed;\r
160 UINT16 SupportMemoryType;\r
161 UINT8 MemoryModuleVoltage;\r
162 UINT8 AssociatedMemorySlotNum;\r
163 UINT16 MemoryModuleConfigHandles[1];\r
164} SMBIOS_TYPE5;\r
165\r
166typedef struct {\r
167 SMBIOS_HEADER Hdr;\r
168 SMBIOS_STRING SocketDesignation;\r
169 UINT8 BankConnections;\r
170 UINT8 CurrentSpeed;\r
171 UINT16 CurrentMemoryType;\r
172 UINT8 InstalledSize;\r
173 UINT8 EnabledSize;\r
174 UINT8 ErrorStatus;\r
175} SMBIOS_TYPE6;\r
176\r
177typedef struct {\r
178 SMBIOS_HEADER Hdr;\r
179 SMBIOS_STRING SocketDesignation;\r
180 UINT16 CacheConfiguration;\r
181 UINT16 MaximumCacheSize;\r
182 UINT16 InstalledSize;\r
183 UINT16 SupportedSRAMType;\r
184 UINT16 CurrentSRAMType;\r
185 UINT8 CacheSpeed;\r
186 UINT8 ErrorCorrectionType;\r
187 UINT8 SystemCacheType;\r
188 UINT8 Associativity;\r
189} SMBIOS_TYPE7;\r
190\r
191typedef struct {\r
192 SMBIOS_HEADER Hdr;\r
193 SMBIOS_STRING InternalReferenceDesignator;\r
194 UINT8 InternalConnectorType;\r
195 SMBIOS_STRING ExternalReferenceDesignator;\r
196 UINT8 ExternalConnectorType;\r
197 UINT8 PortType;\r
198} SMBIOS_TYPE8;\r
199\r
200typedef struct {\r
201 SMBIOS_HEADER Hdr;\r
202 SMBIOS_STRING SlotDesignation;\r
203 UINT8 SlotType;\r
204 UINT8 SlotDataBusWidth;\r
205 UINT8 CurrentUsage;\r
206 UINT8 SlotLength;\r
207 UINT16 SlotID;\r
208 UINT8 SlotCharacteristics1;\r
209 UINT8 SlotCharacteristics2;\r
210 //\r
211 // Add for smbios 2.6\r
212 //\r
213 UINT16 SegmentGroupNum;\r
214 UINT8 BusNum;\r
215 UINT8 DevFuncNum;\r
216} SMBIOS_TYPE9;\r
217\r
a1d4bfcc 218typedef struct _DEVICE_STRUCTURE {\r
5d73d92f 219 UINT8 DeviceType;\r
220 SMBIOS_STRING DescriptionString;\r
a1d4bfcc 221} DEVICE_STRUCTURE;\r
5d73d92f 222\r
223typedef struct {\r
224 SMBIOS_HEADER Hdr;\r
a1d4bfcc 225 DEVICE_STRUCTURE Device[1];\r
5d73d92f 226} SMBIOS_TYPE10;\r
227\r
228typedef struct {\r
229 SMBIOS_HEADER Hdr;\r
230 UINT8 StringCount;\r
231} SMBIOS_TYPE11;\r
232\r
233typedef struct {\r
234 SMBIOS_HEADER Hdr;\r
235 UINT8 StringCount;\r
236} SMBIOS_TYPE12;\r
237\r
238typedef struct {\r
239 SMBIOS_HEADER Hdr;\r
240 UINT8 InstallableLanguages;\r
241 UINT8 Flags;\r
a1d4bfcc 242 UINT8 Reserved[15];\r
5d73d92f 243 SMBIOS_STRING CurrentLanguages;\r
244} SMBIOS_TYPE13;\r
245\r
246typedef struct {\r
247 SMBIOS_HEADER Hdr;\r
248 SMBIOS_STRING GroupName;\r
249 UINT8 ItemType;\r
250 UINT16 ItemHandle;\r
251} SMBIOS_TYPE14;\r
252\r
253typedef struct EVENTLOGTYPE {\r
254 UINT8 LogType;\r
255 UINT8 DataFormatType;\r
256} EVENTLOGTYPE;\r
257\r
258typedef struct {\r
259 SMBIOS_HEADER Hdr;\r
260 UINT16 LogAreaLength;\r
261 UINT16 LogHeaderStartOffset;\r
262 UINT16 LogDataStartOffset;\r
263 UINT8 AccessMethod;\r
264 UINT8 LogStatus;\r
265 UINT32 LogChangeToken;\r
266 UINT32 AccessMethodAddress;\r
267 UINT8 LogHeaderFormat;\r
268 UINT8 NumberOfSupportedLogTypeDescriptors;\r
269 UINT8 LengthOfLogTypeDescriptor;\r
270 EVENTLOGTYPE EventLogTypeDescriptors[1];\r
271} SMBIOS_TYPE15;\r
272\r
273typedef struct {\r
274 SMBIOS_HEADER Hdr;\r
275 UINT8 Location;\r
276 UINT8 Use;\r
277 UINT8 MemoryErrorCorrection;\r
278 UINT32 MaximumCapacity;\r
279 UINT16 MemoryErrorInformationHandle;\r
280 UINT16 NumberOfMemoryDevices;\r
281} SMBIOS_TYPE16;\r
282\r
283typedef struct {\r
284 SMBIOS_HEADER Hdr;\r
285 UINT16 MemoryArrayHandle;\r
286 UINT16 MemoryErrorInformationHandle;\r
287 UINT16 TotalWidth;\r
288 UINT16 DataWidth;\r
289 UINT16 Size;\r
290 UINT8 FormFactor;\r
291 UINT8 DeviceSet;\r
292 SMBIOS_STRING DeviceLocator;\r
293 SMBIOS_STRING BankLocator;\r
294 UINT8 MemoryType;\r
295 UINT16 TypeDetail;\r
296 UINT16 Speed;\r
297 SMBIOS_STRING Manufacturer;\r
298 SMBIOS_STRING SerialNumber;\r
299 SMBIOS_STRING AssetTag;\r
300 SMBIOS_STRING PartNumber;\r
301 //\r
302 // Add for smbios 2.6\r
303 //\r
304 UINT8 Attributes;\r
305} SMBIOS_TYPE17;\r
306\r
307typedef struct {\r
308 SMBIOS_HEADER Hdr;\r
309 UINT8 ErrorType;\r
310 UINT8 ErrorGranularity;\r
311 UINT8 ErrorOperation;\r
312 UINT32 VendorSyndrome;\r
313 UINT32 MemoryArrayErrorAddress;\r
314 UINT32 DeviceErrorAddress;\r
315 UINT32 ErrorResolution;\r
316} SMBIOS_TYPE18;\r
317\r
318typedef struct {\r
319 SMBIOS_HEADER Hdr;\r
320 UINT32 StartingAddress;\r
321 UINT32 EndingAddress;\r
322 UINT16 MemoryArrayHandle;\r
323 UINT8 PartitionWidth;\r
324} SMBIOS_TYPE19;\r
325\r
326typedef struct {\r
327 SMBIOS_HEADER Hdr;\r
328 UINT32 StartingAddress;\r
329 UINT32 EndingAddress;\r
330 UINT16 MemoryDeviceHandle;\r
331 UINT16 MemoryArrayMappedAddressHandle;\r
332 UINT8 PartitionRowPosition;\r
333 UINT8 InterleavePosition;\r
334 UINT8 InterleavedDataDepth;\r
335} SMBIOS_TYPE20;\r
336\r
337typedef struct {\r
338 SMBIOS_HEADER Hdr;\r
339 UINT8 Type;\r
340 UINT8 Interface;\r
341 UINT8 NumberOfButtons;\r
342} SMBIOS_TYPE21;\r
343\r
344typedef struct {\r
345 SMBIOS_HEADER Hdr;\r
346 SMBIOS_STRING Location;\r
347 SMBIOS_STRING Manufacturer;\r
348 SMBIOS_STRING ManufactureDate;\r
349 SMBIOS_STRING SerialNumber;\r
350 SMBIOS_STRING DeviceName;\r
351 UINT8 DeviceChemistry;\r
352 UINT16 DeviceCapacity;\r
353 UINT16 DesignVoltage;\r
354 SMBIOS_STRING SBDSVersionNumber;\r
355 UINT8 MaximumErrorInBatteryData;\r
356 UINT16 SBDSSerialNumber;\r
357 UINT16 SBDSManufactureDate;\r
358 SMBIOS_STRING SBDSDeviceChemistry;\r
359 UINT8 DesignCapacityMultiplier;\r
360 UINT32 OEMSpecific;\r
361} SMBIOS_TYPE22;\r
362\r
363typedef struct {\r
364 SMBIOS_HEADER Hdr;\r
365 UINT8 Capabilities;\r
366 UINT16 ResetCount;\r
367 UINT16 ResetLimit;\r
368 UINT16 TimerInterval;\r
369 UINT16 Timeout;\r
370} SMBIOS_TYPE23;\r
371\r
372typedef struct {\r
373 SMBIOS_HEADER Hdr;\r
374 UINT8 HardwareSecuritySettings;\r
375} SMBIOS_TYPE24;\r
376\r
377typedef struct {\r
378 SMBIOS_HEADER Hdr;\r
379 UINT8 NextScheduledPowerOnMonth;\r
380 UINT8 NextScheduledPowerOnDayOfMonth;\r
381 UINT8 NextScheduledPowerOnHour;\r
382 UINT8 NextScheduledPowerOnMinute;\r
383 UINT8 NextScheduledPowerOnSecond;\r
384} SMBIOS_TYPE25;\r
385\r
386typedef struct {\r
387 SMBIOS_HEADER Hdr;\r
388 SMBIOS_STRING Description;\r
389 UINT8 LocationAndStatus;\r
390 UINT16 MaximumValue;\r
391 UINT16 MinimumValue;\r
392 UINT16 Resolution;\r
393 UINT16 Tolerance;\r
394 UINT16 Accuracy;\r
395 UINT32 OEMDefined;\r
396 UINT16 NominalValue;\r
397} SMBIOS_TYPE26;\r
398\r
399typedef struct {\r
400 SMBIOS_HEADER Hdr;\r
401 UINT16 TemperatureProbeHandle;\r
402 UINT8 DeviceTypeAndStatus;\r
403 UINT8 CoolingUnitGroup;\r
404 UINT32 OEMDefined;\r
405 UINT16 NominalSpeed;\r
406} SMBIOS_TYPE27;\r
407\r
408typedef struct {\r
409 SMBIOS_HEADER Hdr;\r
410 SMBIOS_STRING Description;\r
411 UINT8 LocationAndStatus;\r
412 UINT16 MaximumValue;\r
413 UINT16 MinimumValue;\r
414 UINT16 Resolution;\r
415 UINT16 Tolerance;\r
416 UINT16 Accuracy;\r
417 UINT32 OEMDefined;\r
418 UINT16 NominalValue;\r
419} SMBIOS_TYPE28;\r
420\r
421typedef struct {\r
422 SMBIOS_HEADER Hdr;\r
423 SMBIOS_STRING Description;\r
424 UINT8 LocationAndStatus;\r
425 UINT16 MaximumValue;\r
426 UINT16 MinimumValue;\r
427 UINT16 Resolution;\r
428 UINT16 Tolerance;\r
429 UINT16 Accuracy;\r
430 UINT32 OEMDefined;\r
431 UINT16 NominalValue;\r
432} SMBIOS_TYPE29;\r
433\r
434typedef struct {\r
435 SMBIOS_HEADER Hdr;\r
436 SMBIOS_STRING ManufacturerName;\r
437 UINT8 Connections;\r
438} SMBIOS_TYPE30;\r
439\r
440typedef struct {\r
441 SMBIOS_HEADER Hdr;\r
442 UINT8 Checksum;\r
443 UINT8 Reserved1;\r
444 UINT16 Reserved2;\r
445 UINT32 BisEntry16;\r
446 UINT32 BisEntry32;\r
447 UINT64 Reserved3;\r
448 UINT32 Reserved4;\r
449} SMBIOS_TYPE31;\r
450\r
451typedef struct {\r
452 SMBIOS_HEADER Hdr;\r
453 UINT8 Reserved[6];\r
454 UINT8 BootStatus[1];\r
455} SMBIOS_TYPE32;\r
456\r
457typedef struct {\r
458 SMBIOS_HEADER Hdr;\r
459 UINT8 ErrorType;\r
460 UINT8 ErrorGranularity;\r
461 UINT8 ErrorOperation;\r
462 UINT32 VendorSyndrome;\r
463 UINT64 MemoryArrayErrorAddress;\r
464 UINT64 DeviceErrorAddress;\r
465 UINT32 ErrorResolution;\r
466} SMBIOS_TYPE33;\r
467\r
468typedef struct {\r
469 SMBIOS_HEADER Hdr;\r
470 SMBIOS_STRING Description;\r
471 UINT8 Type;\r
472 UINT32 Address;\r
473 UINT8 AddressType;\r
474} SMBIOS_TYPE34;\r
475\r
476typedef struct {\r
477 SMBIOS_HEADER Hdr;\r
478 SMBIOS_STRING Description;\r
479 UINT16 ManagementDeviceHandle;\r
480 UINT16 ComponentHandle;\r
481 UINT16 ThresholdHandle;\r
482} SMBIOS_TYPE35;\r
483\r
484typedef struct {\r
485 SMBIOS_HEADER Hdr;\r
486 UINT16 LowerThresholdNonCritical;\r
487 UINT16 UpperThresholdNonCritical;\r
488 UINT16 LowerThresholdCritical;\r
489 UINT16 UpperThresholdCritical;\r
490 UINT16 LowerThresholdNonRecoverable;\r
491 UINT16 UpperThresholdNonRecoverable;\r
492} SMBIOS_TYPE36;\r
493\r
494typedef struct MEMORYDEVICE {\r
495 UINT8 DeviceLoad;\r
496 UINT16 DeviceHandle;\r
497} MEMORYDEVICE;\r
498\r
499typedef struct {\r
500 SMBIOS_HEADER Hdr;\r
501 UINT8 ChannelType;\r
502 UINT8 MaximumChannelLoad;\r
503 UINT8 MemoryDeviceCount;\r
504 MEMORYDEVICE MemoryDevice[1];\r
505} SMBIOS_TYPE37;\r
506\r
507typedef struct {\r
508 SMBIOS_HEADER Hdr;\r
509 UINT8 InterfaceType;\r
510 UINT8 IPMISpecificationRevision;\r
511 UINT8 I2CSlaveAddress;\r
512 UINT8 NVStorageDeviceAddress;\r
513 UINT64 BaseAddress;\r
514} SMBIOS_TYPE38;\r
515\r
516typedef struct {\r
517 SMBIOS_HEADER Hdr;\r
518 UINT8 PowerUnitGroup;\r
519 SMBIOS_STRING Location;\r
520 SMBIOS_STRING DeviceName;\r
521 SMBIOS_STRING Manufacturer;\r
522 SMBIOS_STRING SerialNumber;\r
523 SMBIOS_STRING AssetTagNumber;\r
524 SMBIOS_STRING ModelPartNumber;\r
525 SMBIOS_STRING RevisionLevel;\r
526 UINT16 MaxPowerCapacity;\r
527 UINT16 PowerSupplyCharacteristics;\r
528 UINT16 InputVoltageProbeHandle;\r
529 UINT16 CoolingDeviceHandle;\r
530 UINT16 InputCurrentProbeHandle;\r
531} SMBIOS_TYPE39;\r
532\r
533//\r
534// Add type 40 and type 41 for smbios 2.6\r
535//\r
536typedef struct {\r
537 UINT8 EntryLength;\r
538 UINT16 ReferencedHandle;\r
539 UINT8 ReferencedOffset;\r
540 SMBIOS_STRING EntryString;\r
541 UINT8 Value[1];\r
542} ADDITIONAL_INFORMATION_ENTRY;\r
543\r
544typedef struct {\r
545 SMBIOS_HEADER Hdr;\r
546 UINT8 NumberOfAdditionalInformationEntries;\r
547 ADDITIONAL_INFORMATION_ENTRY AdditionalInfoEntries[1];\r
548} SMBIOS_TYPE40;\r
549\r
550typedef struct {\r
551 SMBIOS_HEADER Hdr;\r
552 SMBIOS_STRING ReferenceDesignation;\r
553 UINT8 DeviceType;\r
554 UINT8 DeviceTypeInstance;\r
555 UINT16 SegmentGroupNum;\r
556 UINT8 BusNum;\r
557 UINT8 DevFuncNum;\r
558} SMBIOS_TYPE41;\r
559\r
560typedef struct {\r
561 SMBIOS_HEADER Hdr;\r
562} SMBIOS_TYPE126;\r
563\r
564typedef struct {\r
565 SMBIOS_HEADER Hdr;\r
566} SMBIOS_TYPE127;\r
567\r
568/*\r
569 Notes:\r
570 Among the following 42 type of structues for SMBIOS Stucture table,\r
571 There are only 11 Types(0,1,3,4,7,9,16,17,19,20,32) are required,\r
572 The other types is optional.\r
573*/\r
574typedef union {\r
575 SMBIOS_HEADER *Hdr;\r
576 SMBIOS_TYPE0 *Type0;\r
577 SMBIOS_TYPE1 *Type1;\r
578 SMBIOS_TYPE2 *Type2;\r
579 SMBIOS_TYPE3 *Type3;\r
580 SMBIOS_TYPE4 *Type4;\r
581 SMBIOS_TYPE5 *Type5;\r
582 SMBIOS_TYPE6 *Type6;\r
583 SMBIOS_TYPE7 *Type7;\r
584 SMBIOS_TYPE8 *Type8;\r
585 SMBIOS_TYPE9 *Type9;\r
586 SMBIOS_TYPE10 *Type10;\r
587 SMBIOS_TYPE11 *Type11;\r
588 SMBIOS_TYPE12 *Type12;\r
589 SMBIOS_TYPE13 *Type13;\r
590 SMBIOS_TYPE14 *Type14;\r
591 SMBIOS_TYPE15 *Type15;\r
592 SMBIOS_TYPE16 *Type16;\r
593 SMBIOS_TYPE17 *Type17;\r
594 SMBIOS_TYPE18 *Type18;\r
595 SMBIOS_TYPE19 *Type19;\r
596 SMBIOS_TYPE20 *Type20;\r
597 SMBIOS_TYPE21 *Type21;\r
598 SMBIOS_TYPE22 *Type22;\r
599 SMBIOS_TYPE23 *Type23;\r
600 SMBIOS_TYPE24 *Type24;\r
601 SMBIOS_TYPE25 *Type25;\r
602 SMBIOS_TYPE26 *Type26;\r
603 SMBIOS_TYPE27 *Type27;\r
604 SMBIOS_TYPE28 *Type28;\r
605 SMBIOS_TYPE29 *Type29;\r
606 SMBIOS_TYPE30 *Type30;\r
607 SMBIOS_TYPE31 *Type31;\r
608 SMBIOS_TYPE32 *Type32;\r
609 SMBIOS_TYPE33 *Type33;\r
610 SMBIOS_TYPE34 *Type34;\r
611 SMBIOS_TYPE35 *Type35;\r
612 SMBIOS_TYPE36 *Type36;\r
613 SMBIOS_TYPE37 *Type37;\r
614 SMBIOS_TYPE38 *Type38;\r
615 SMBIOS_TYPE39 *Type39;\r
616 SMBIOS_TYPE40 *Type40;\r
617 SMBIOS_TYPE41 *Type41;\r
618 SMBIOS_TYPE126 *Type126;\r
619 SMBIOS_TYPE127 *Type127;\r
620 UINT8 *Raw;\r
621} SMBIOS_STRUCTURE_POINTER;\r
622\r
623#pragma pack()\r
624\r
a1d4bfcc 625/**\r
626 Return SMBIOS string given the string number.\r
5d73d92f 627\r
a1d4bfcc 628 @param[in] Smbios Pointer to SMBIOS structure.\r
629 @param[in] StringNumber String number to return. -1 is used to skip all strings and\r
630 point to the next SMBIOS structure.\r
5d73d92f 631\r
a1d4bfcc 632 @return Pointer to string, or pointer to next SMBIOS strcuture if StringNumber == -1\r
633**/\r
634CHAR8*\r
635LibGetSmbiosString (\r
636 IN SMBIOS_STRUCTURE_POINTER *Smbios,\r
637 IN UINT16 StringNumber\r
638 );\r
5d73d92f 639\r
640#endif\r