SmbiosTable.c 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. /** @file
  2. Static SMBIOS Table for platform
  3. Note SMBIOS 2.7.1 Required structures:
  4. BIOS Information (Type 0)
  5. System Information (Type 1)
  6. System Enclosure (Type 3)
  7. Processor Information (Type 4) - CPU Driver
  8. Cache Information (Type 7) - For cache that is external to processor
  9. System Slots (Type 9) - If system has slots
  10. Physical Memory Array (Type 16)
  11. Memory Device (Type 17) - For each socketed system-memory Device
  12. Memory Array Mapped Address (Type 19) - One per contiguous block per Physical Memroy Array
  13. System Boot Information (Type 32)
  14. Copyright (c) 2012, Apple Inc. All rights reserved.<BR>
  15. SPDX-License-Identifier: BSD-2-Clause-Patent
  16. **/
  17. #include <PiDxe.h>
  18. #include <IndustryStandard/SmBios.h>
  19. #include <Protocol/Smbios.h>
  20. #include <Library/SmbiosLib.h>
  21. SMBIOS_TABLE_TYPE0 gSmbiosType0Template = {
  22. { EFI_SMBIOS_TYPE_BIOS_INFORMATION, sizeof (SMBIOS_TABLE_TYPE0), 0 },
  23. 1, // Vendor String
  24. 2, // BiosVersion String
  25. 0xE000, // BiosSegment
  26. 3, // BiosReleaseDate String
  27. 0x7F, // BiosSize
  28. { // BiosCharacteristics
  29. 0, // Reserved :2; ///< Bits 0-1.
  30. 0, // Unknown :1;
  31. 0, // BiosCharacteristicsNotSupported :1;
  32. 0, // IsaIsSupported :1;
  33. 0, // McaIsSupported :1;
  34. 0, // EisaIsSupported :1;
  35. 1, // PciIsSupported :1;
  36. 0, // PcmciaIsSupported :1;
  37. 0, // PlugAndPlayIsSupported :1;
  38. 0, // ApmIsSupported :1;
  39. 1, // BiosIsUpgradable :1;
  40. 1, // BiosShadowingAllowed :1;
  41. 0, // VlVesaIsSupported :1;
  42. 0, // EscdSupportIsAvailable :1;
  43. 0, // BootFromCdIsSupported :1;
  44. 1, // SelectableBootIsSupported :1;
  45. 0, // RomBiosIsSocketed :1;
  46. 0, // BootFromPcmciaIsSupported :1;
  47. 0, // EDDSpecificationIsSupported :1;
  48. 0, // JapaneseNecFloppyIsSupported :1;
  49. 0, // JapaneseToshibaFloppyIsSupported :1;
  50. 0, // Floppy525_360IsSupported :1;
  51. 0, // Floppy525_12IsSupported :1;
  52. 0, // Floppy35_720IsSupported :1;
  53. 0, // Floppy35_288IsSupported :1;
  54. 0, // PrintScreenIsSupported :1;
  55. 0, // Keyboard8042IsSupported :1;
  56. 0, // SerialIsSupported :1;
  57. 0, // PrinterIsSupported :1;
  58. 0, // CgaMonoIsSupported :1;
  59. 0, // NecPc98 :1;
  60. 0 // ReservedForVendor :32; ///< Bits 32-63. Bits 32-47 reserved for BIOS vendor
  61. ///< and bits 48-63 reserved for System Vendor.
  62. },
  63. { // BIOSCharacteristicsExtensionBytes[]
  64. 0x81, // AcpiIsSupported :1;
  65. // UsbLegacyIsSupported :1;
  66. // AgpIsSupported :1;
  67. // I2OBootIsSupported :1;
  68. // Ls120BootIsSupported :1;
  69. // AtapiZipDriveBootIsSupported :1;
  70. // Boot1394IsSupported :1;
  71. // SmartBatteryIsSupported :1;
  72. // BIOSCharacteristicsExtensionBytes[1]
  73. 0x0a, // BiosBootSpecIsSupported :1;
  74. // FunctionKeyNetworkBootIsSupported :1;
  75. // TargetContentDistributionEnabled :1;
  76. // UefiSpecificationSupported :1;
  77. // VirtualMachineSupported :1;
  78. // ExtensionByte2Reserved :3;
  79. },
  80. 0x00, // SystemBiosMajorRelease
  81. 0x01, // SystemBiosMinorRelease
  82. 0xFF, // EmbeddedControllerFirmwareMajorRelease
  83. 0xFF, // EmbeddedControllerFirmwareMinorRelease
  84. };
  85. CHAR8 *gSmbiosType0Strings[] = {
  86. "http://www.tianocore.org/edk2/", // Vendor String
  87. __TIME__, // BiosVersion String
  88. __DATE__, // BiosReleaseDate String
  89. NULL
  90. };
  91. SMBIOS_TABLE_TYPE1 gSmbiosType1Template = {
  92. { EFI_SMBIOS_TYPE_SYSTEM_INFORMATION, sizeof (SMBIOS_TABLE_TYPE1), 0 },
  93. 1, // Manufacturer String
  94. 2, // ProductName String
  95. 3, // Version String
  96. 4, // SerialNumber String
  97. { 0x25EF0280, 0xEC82, 0x42B0, { 0x8F, 0xB6, 0x10, 0xAD, 0xCC, 0xC6, 0x7C, 0x02}
  98. },
  99. SystemWakeupTypePowerSwitch,
  100. 5, // SKUNumber String
  101. 6, // Family String
  102. };
  103. CHAR8 *gSmbiosType1Strings[] = {
  104. "http://www.tianocore.org/edk2/",
  105. "EmulatorPkg",
  106. "1.0",
  107. "System Serial#",
  108. "System SKU#",
  109. "edk2",
  110. NULL
  111. };
  112. SMBIOS_TABLE_TYPE2 gSmbiosType2Template = {
  113. { EFI_SMBIOS_TYPE_BASEBOARD_INFORMATION, sizeof (SMBIOS_TABLE_TYPE2), 0 },
  114. 1, // Manufacturer String
  115. 2, // ProductName String
  116. 3, // Version String
  117. 4, // SerialNumber String
  118. 5, // AssetTag String
  119. { // FeatureFlag
  120. 1, // Motherboard :1;
  121. 0, // RequiresDaughterCard :1;
  122. 0, // Removable :1;
  123. 0, // Replaceable :1;
  124. 0, // HotSwappable :1;
  125. 0, // Reserved :3;
  126. },
  127. 6, // LocationInChassis String
  128. 0, // ChassisHandle;
  129. BaseBoardTypeMotherBoard, // BoardType;
  130. 0, // NumberOfContainedObjectHandles;
  131. { 0 } // ContainedObjectHandles[1];
  132. };
  133. CHAR8 *gSmbiosType2Strings[] = {
  134. "http://www.tianocore.org/edk2/",
  135. "EmulatorPkg",
  136. "1.0",
  137. "Base Board Serial#",
  138. "Base Board Asset Tag#",
  139. "Part Component",
  140. NULL
  141. };
  142. SMBIOS_TABLE_TYPE3 gSmbiosType3Template = {
  143. { EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE, sizeof (SMBIOS_TABLE_TYPE3), 0 },
  144. 1, // Manufacturer String
  145. MiscChassisTypeLapTop, // Type;
  146. 2, // Version String
  147. 3, // SerialNumber String
  148. 4, // AssetTag String
  149. ChassisStateSafe, // BootupState;
  150. ChassisStateSafe, // PowerSupplyState;
  151. ChassisStateSafe, // ThermalState;
  152. ChassisSecurityStatusNone, // SecurityStatus;
  153. { 0, 0, 0, 0}, // OemDefined[4];
  154. 0, // Height;
  155. 0, // NumberofPowerCords;
  156. 0, // ContainedElementCount;
  157. 0, // ContainedElementRecordLength;
  158. {
  159. { 0 }
  160. }, // ContainedElements[1];
  161. };
  162. CHAR8 *gSmbiosType3Strings[] = {
  163. "http://www.tianocore.org/edk2/",
  164. "EmulatorPkg",
  165. "Chassis Board Serial#",
  166. "Chassis Board Asset Tag#",
  167. NULL
  168. };
  169. SMBIOS_TABLE_TYPE8 gSmbiosType8Template1 = {
  170. { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
  171. 0, // InternalReferenceDesignator String
  172. PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  173. 1, // ExternalReferenceDesignator String
  174. PortConnectorTypeNone, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  175. PortTypeOther, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
  176. };
  177. CHAR8 *gSmbiosType8Strings1[] = {
  178. "Mini DisplayPort",
  179. NULL
  180. };
  181. SMBIOS_TABLE_TYPE8 gSmbiosType8Template2 = {
  182. { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
  183. 0, // InternalReferenceDesignator String
  184. PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  185. 1, // ExternalReferenceDesignator String
  186. PortConnectorTypeNone, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  187. PortTypeFireWire, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
  188. };
  189. CHAR8 *gSmbiosType8Strings2[] = {
  190. "FireWire 800",
  191. NULL
  192. };
  193. SMBIOS_TABLE_TYPE8 gSmbiosType8Template3 = {
  194. { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
  195. 0, // InternalReferenceDesignator String
  196. PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  197. 1, // ExternalReferenceDesignator String
  198. PortConnectorTypeRJ45, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  199. PortTypeNetworkPort, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
  200. };
  201. CHAR8 *gSmbiosType8Strings3[] = {
  202. "Ethernet",
  203. NULL
  204. };
  205. SMBIOS_TABLE_TYPE8 gSmbiosType8Template4 = {
  206. { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
  207. 0, // InternalReferenceDesignator String
  208. PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  209. 1, // ExternalReferenceDesignator String
  210. PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  211. PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
  212. };
  213. CHAR8 *gSmbiosType8Strings4[] = {
  214. "USB0",
  215. NULL
  216. };
  217. SMBIOS_TABLE_TYPE8 gSmbiosType8Template5 = {
  218. { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
  219. 0, // InternalReferenceDesignator String
  220. PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  221. 1, // ExternalReferenceDesignator String
  222. PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  223. PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
  224. };
  225. CHAR8 *gSmbiosType8Strings5[] = {
  226. "USB1",
  227. NULL
  228. };
  229. SMBIOS_TABLE_TYPE8 gSmbiosType8Template6 = {
  230. { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
  231. 0, // InternalReferenceDesignator String
  232. PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  233. 1, // ExternalReferenceDesignator String
  234. PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  235. PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
  236. };
  237. CHAR8 *gSmbiosType8Strings6[] = {
  238. "USB2",
  239. NULL
  240. };
  241. SMBIOS_TABLE_TYPE8 gSmbiosType8Template7 = {
  242. { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
  243. 0, // InternalReferenceDesignator String
  244. PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  245. 1, // ExternalReferenceDesignator String
  246. PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  247. PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
  248. };
  249. CHAR8 *gSmbiosType8Strings7[] = {
  250. "USB3",
  251. NULL
  252. };
  253. SMBIOS_TABLE_TYPE8 gSmbiosType8Template8 = {
  254. { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
  255. 0, // InternalReferenceDesignator String
  256. PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  257. 1, // ExternalReferenceDesignator String
  258. PortConnectorTypeHeadPhoneMiniJack, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  259. PortTypeAudioPort, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
  260. };
  261. CHAR8 *gSmbiosType8Strings8[] = {
  262. "Audio Line In",
  263. NULL
  264. };
  265. SMBIOS_TABLE_TYPE8 gSmbiosType8Template9 = {
  266. { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
  267. 0, // InternalReferenceDesignator String
  268. PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  269. 1, // ExternalReferenceDesignator String
  270. PortConnectorTypeHeadPhoneMiniJack, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
  271. PortTypeAudioPort, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
  272. };
  273. CHAR8 *gSmbiosType8Strings9[] = {
  274. "Audio Line Out",
  275. NULL
  276. };
  277. SMBIOS_TABLE_TYPE9 gSmbiosType9Template = {
  278. { EFI_SMBIOS_TYPE_SYSTEM_SLOTS, sizeof (SMBIOS_TABLE_TYPE9), 0 },
  279. 1, // SlotDesignation String
  280. SlotTypeOther, // SlotType; ///< The enumeration value from MISC_SLOT_TYPE.
  281. SlotDataBusWidthOther, // SlotDataBusWidth; ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH.
  282. SlotUsageAvailable, // CurrentUsage; ///< The enumeration value from MISC_SLOT_USAGE.
  283. SlotLengthOther, // SlotLength; ///< The enumeration value from MISC_SLOT_LENGTH.
  284. 0, // SlotID;
  285. { // SlotCharacteristics1;
  286. 1, // CharacteristicsUnknown :1;
  287. 0, // Provides50Volts :1;
  288. 0, // Provides33Volts :1;
  289. 0, // SharedSlot :1;
  290. 0, // PcCard16Supported :1;
  291. 0, // CardBusSupported :1;
  292. 0, // ZoomVideoSupported :1;
  293. 0, // ModemRingResumeSupported:1;
  294. },
  295. { // SlotCharacteristics2;
  296. 0, // PmeSignalSupported :1;
  297. 0, // HotPlugDevicesSupported :1;
  298. 0, // SmbusSignalSupported :1;
  299. 0, // Reserved :5; ///< Set to 0.
  300. },
  301. 0, // SegmentGroupNum;
  302. 0, // BusNum;
  303. 0, // DevFuncNum;
  304. };
  305. CHAR8 *gSmbiosType9Strings[] = {
  306. "SD Card",
  307. NULL
  308. };
  309. SMBIOS_TABLE_TYPE11 gSmbiosType11Template = {
  310. { EFI_SMBIOS_TYPE_OEM_STRINGS, sizeof (SMBIOS_TABLE_TYPE11), 0 },
  311. 1 // StringCount
  312. };
  313. CHAR8 *gSmbiosType11Strings[] = {
  314. "https://svn.code.sf.net/p/edk2/code/trunk/edk2/EmulatorPkg/",
  315. NULL
  316. };
  317. SMBIOS_TABLE_TYPE12 gSmbiosType12Template = {
  318. { EFI_SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS, sizeof (SMBIOS_TABLE_TYPE12), 0 },
  319. 1 // StringCount
  320. };
  321. CHAR8 *gSmbiosType12Strings[] = {
  322. "https://svn.code.sf.net/p/edk2/code/trunk/edk2/EmulatorPkg/EmulatorPkg.dsc",
  323. NULL
  324. };
  325. SMBIOS_TABLE_TYPE16 gSmbiosType16Template = {
  326. { EFI_SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY, sizeof (SMBIOS_TABLE_TYPE16), 0 },
  327. MemoryArrayLocationSystemBoard, // Location; ///< The enumeration value from MEMORY_ARRAY_LOCATION.
  328. MemoryArrayUseSystemMemory, // Use; ///< The enumeration value from MEMORY_ARRAY_USE.
  329. MemoryErrorCorrectionUnknown, // MemoryErrorCorrection; ///< The enumeration value from MEMORY_ERROR_CORRECTION.
  330. 0x80000000, // MaximumCapacity;
  331. 0xFFFE, // MemoryErrorInformationHandle;
  332. 1, // NumberOfMemoryDevices;
  333. 0x3fffffffffffffffULL, // ExtendedMaximumCapacity;
  334. };
  335. SMBIOS_TABLE_TYPE17 gSmbiosType17Template = {
  336. { EFI_SMBIOS_TYPE_MEMORY_DEVICE, sizeof (SMBIOS_TABLE_TYPE17), 0 },
  337. 0, // MemoryArrayHandle;
  338. 0xFFFE, // MemoryErrorInformationHandle;
  339. 0xFFFF, // TotalWidth;
  340. 0xFFFF, // DataWidth;
  341. 0xFFFF, // Size;
  342. MemoryFormFactorUnknown, // FormFactor; ///< The enumeration value from MEMORY_FORM_FACTOR.
  343. 0xff, // DeviceSet;
  344. 1, // DeviceLocator String
  345. 2, // BankLocator String
  346. MemoryTypeDram, // MemoryType; ///< The enumeration value from MEMORY_DEVICE_TYPE.
  347. { // TypeDetail;
  348. 0, // Reserved :1;
  349. 0, // Other :1;
  350. 1, // Unknown :1;
  351. 0, // FastPaged :1;
  352. 0, // StaticColumn :1;
  353. 0, // PseudoStatic :1;
  354. 0, // Rambus :1;
  355. 0, // Synchronous :1;
  356. 0, // Cmos :1;
  357. 0, // Edo :1;
  358. 0, // WindowDram :1;
  359. 0, // CacheDram :1;
  360. 0, // Nonvolatile :1;
  361. 0, // Registered :1;
  362. 0, // Unbuffered :1;
  363. 0, // Reserved1 :1;
  364. },
  365. 0, // Speed;
  366. 3, // Manufacturer String
  367. 0, // SerialNumber String
  368. 0, // AssetTag String
  369. 0, // PartNumber String
  370. 0, // Attributes;
  371. 0, // ExtendedSize;
  372. 0, // ConfiguredMemoryClockSpeed;
  373. };
  374. CHAR8 *gSmbiosType17Strings[] = {
  375. "OS Virtual Memory",
  376. "malloc",
  377. "OSV",
  378. NULL
  379. };
  380. SMBIOS_TABLE_TYPE23 gSmbiosType23Template = {
  381. { EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION, sizeof (SMBIOS_TABLE_TYPE23), 0 },
  382. 0, // Capabilities;
  383. 0, // ResetCount;
  384. 0, // ResetLimit;
  385. 0, // TimerInterval;
  386. 0 // Timeout;
  387. };
  388. SMBIOS_TABLE_TYPE32 gSmbiosType32Template = {
  389. { EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION, sizeof (SMBIOS_TABLE_TYPE32), 0 },
  390. { 0, 0, 0, 0, 0, 0}, // Reserved[6];
  391. BootInformationStatusNoError // BootStatus
  392. };
  393. SMBIOS_TEMPLATE_ENTRY gSmbiosTemplate[] = {
  394. { (SMBIOS_STRUCTURE *)&gSmbiosType0Template, gSmbiosType0Strings },
  395. { (SMBIOS_STRUCTURE *)&gSmbiosType1Template, gSmbiosType1Strings },
  396. { (SMBIOS_STRUCTURE *)&gSmbiosType2Template, gSmbiosType2Strings },
  397. { (SMBIOS_STRUCTURE *)&gSmbiosType3Template, gSmbiosType3Strings },
  398. { (SMBIOS_STRUCTURE *)&gSmbiosType8Template1, gSmbiosType8Strings1 },
  399. { (SMBIOS_STRUCTURE *)&gSmbiosType8Template2, gSmbiosType8Strings2 },
  400. { (SMBIOS_STRUCTURE *)&gSmbiosType8Template3, gSmbiosType8Strings3 },
  401. { (SMBIOS_STRUCTURE *)&gSmbiosType8Template4, gSmbiosType8Strings4 },
  402. { (SMBIOS_STRUCTURE *)&gSmbiosType8Template5, gSmbiosType8Strings5 },
  403. { (SMBIOS_STRUCTURE *)&gSmbiosType8Template6, gSmbiosType8Strings6 },
  404. { (SMBIOS_STRUCTURE *)&gSmbiosType8Template7, gSmbiosType8Strings7 },
  405. { (SMBIOS_STRUCTURE *)&gSmbiosType8Template8, gSmbiosType8Strings8 },
  406. { (SMBIOS_STRUCTURE *)&gSmbiosType8Template9, gSmbiosType8Strings9 },
  407. { (SMBIOS_STRUCTURE *)&gSmbiosType9Template, gSmbiosType9Strings },
  408. { (SMBIOS_STRUCTURE *)&gSmbiosType11Template, gSmbiosType11Strings },
  409. { (SMBIOS_STRUCTURE *)&gSmbiosType12Template, gSmbiosType12Strings },
  410. { (SMBIOS_STRUCTURE *)&gSmbiosType16Template, NULL },
  411. { (SMBIOS_STRUCTURE *)&gSmbiosType17Template, gSmbiosType17Strings },
  412. { (SMBIOS_STRUCTURE *)&gSmbiosType23Template, NULL },
  413. { (SMBIOS_STRUCTURE *)&gSmbiosType32Template, NULL },
  414. { NULL, NULL }
  415. };