1
0

smbios.h 54 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477
  1. /*++
  2. Copyright (c) 2014 Minoca Corp. All Rights Reserved
  3. Module Name:
  4. smbios.h
  5. Abstract:
  6. This header contains definitions for the SMBIOS tables.
  7. Author:
  8. Evan Green 6-May-2014
  9. --*/
  10. //
  11. // ------------------------------------------------------------------- Includes
  12. //
  13. //
  14. // ---------------------------------------------------------------- Definitions
  15. //
  16. //
  17. // Define the UEFI SMBIOS table GUID.
  18. //
  19. #define EFI_SMBIOS_TABLE_GUID \
  20. { \
  21. 0xEB9D2D31, 0x2D88, 0x11D3, \
  22. {0x9A, 0x16, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} \
  23. }
  24. #define SMBIOS_ANCHOR_STRING_VALUE 0x5F4D535F
  25. #define SMBIOS_INTERMEDIATE_ANCHOR "_DMI_"
  26. #define SMBIOS_INTERMEDIATE_ANCHOR_SIZE (sizeof(SMBIOS_INTERMEDIATE_ANCHOR) - 1)
  27. //
  28. // Define SMBIOS BIOS Characteristics flags.
  29. //
  30. #define SMBIOS_BIOS_CHARACTERISTIC_UNKNOWN (1 << 2)
  31. #define SMBIOS_BIOS_CHARACTERISTIC_UNSUPPORTED (1 << 3)
  32. #define SMBIOS_BIOS_CHARACTERISTIC_ISA (1 << 4)
  33. #define SMBIOS_BIOS_CHARACTERISTIC_MCA (1 << 5)
  34. #define SMBIOS_BIOS_CHARACTERISTIC_EISA (1 << 6)
  35. #define SMBIOS_BIOS_CHARACTERISTIC_PCI (1 << 7)
  36. #define SMBIOS_BIOS_CHARACTERISTIC_PCMCIA (1 << 8)
  37. #define SMBIOS_BIOS_CHARACTERISTIC_PNP (1 << 9)
  38. #define SMBIOS_BIOS_CHARACTERISTIC_APM (1 << 10)
  39. #define SMBIOS_BIOS_CHARACTERISTIC_UPGRADEABLE (1 << 11)
  40. #define SMBIOS_BIOS_CHARACTERISTIC_SHADOWING (1 << 12)
  41. #define SMBIOS_BIOS_CHARACTERISTIC_VESA (1 << 13)
  42. #define SMBIOS_BIOS_CHARACTERISTIC_ESCD (1 << 14)
  43. #define SMBIOS_BIOS_CHARACTERISTIC_CD_BOOT (1 << 15)
  44. #define SMBIOS_BIOS_CHARACTERISTIC_SELECTABLE_BOOT (1 << 16)
  45. #define SMBIOS_BIOS_CHARACTERISTIC_ROM_SOCKETED (1 << 17)
  46. #define SMBIOS_BIOS_CHARACTERISTIC_PCMCIA_BOOT (1 << 18)
  47. #define SMBIOS_BIOS_CHARACTERISTIC_EDD (1 << 19)
  48. #define SMBIOS_BIOS_CHARACTERISTIC_JAPAN_NEC_FLOPPY (1 << 20)
  49. #define SMBIOS_BIOS_CHARACTERISTIC_JAPAN_TOSHIBA_FLOPPY (1 << 21)
  50. #define SMBIOS_BIOS_CHARACTERISTIC_525_360KB_FLOPPY (1 << 22)
  51. #define SMBIOS_BIOS_CHARACTERISTIC_525_1MB_FLOPPY (1 << 23)
  52. #define SMBIOS_BIOS_CHARACTERISTIC_35_720KB_FLOPPY (1 << 24)
  53. #define SMBIOS_BIOS_CHARACTERISTIC_35_2M_FLOPPY (1 << 25)
  54. #define SMBIOS_BIOS_CHARACTERISTIC_INT5_PRINT_SCREEN (1 << 26)
  55. #define SMBIOS_BIOS_CHARACTERISTIC_INT9_8042 (1 << 27)
  56. #define SMBIOS_BIOS_CHARACTERISTIC_INT14_SERIAL (1 << 28)
  57. #define SMBIOS_BIOS_CHARACTERISTIC_INT17_PRINTER (1 << 29)
  58. #define SMBIOS_BIOS_CHARACTERISTIC_INT10_CGA (1 << 30)
  59. #define SMBIOS_BIOS_CHARACTERISTIC_NEC_PC98 (1 << 31)
  60. #define SMBIOS_BIOS_CHARACTERISTIC_EX_ACPI (1 << 0)
  61. #define SMBIOS_BIOS_CHARACTERISTIC_EX_USB_LEGACY (1 << 1)
  62. #define SMBIOS_BIOS_CHARACTERISTIC_EX_AGP (1 << 2)
  63. #define SMBIOS_BIOS_CHARACTERISTIC_EX_I2O_BOOT (1 << 3)
  64. #define SMBIOS_BIOS_CHARACTERISTIC_EX_LS120_SUPERDISK (1 << 4)
  65. #define SMBIOS_BIOS_CHARACTERISTIC_EX_ZIP (1 << 5)
  66. #define SMBIOS_BIOS_CHARACTERISTIC_EX_1394 (1 << 6)
  67. #define SMBIOS_BIOS_CHARACTERISTIC_EX_SMART_BATTERY (1 << 7)
  68. #define SMBIOS_BIOS_CHARACTERISTIC_EX_BIOS_BOOT (1 << 8)
  69. #define SMBIOS_BIOS_CHARACTERISTIC_EX_NETWORK_BOOT (1 << 9)
  70. #define SMBIOS_BIOS_CHARACTERISTIC_EX_TARGETED (1 << 10)
  71. #define SMBIOS_BIOS_CHARACTERISTIC_EX_UEFI (1 << 11)
  72. #define SMBIOS_BIOS_CHARACTERISTIC_EX_VIRTUAL_MACHINE (1 << 12)
  73. //
  74. // Define SMBIOS System information wakeup types.
  75. //
  76. #define SMBIOS_SYSTEM_WAKEUP_RESERVED 0x0
  77. #define SMBIOS_SYSTEM_WAKEUP_OTHER 0x1
  78. #define SMBIOS_SYSTEM_WAKEUP_UNKNOWN 0x2
  79. #define SMBIOS_SYSTEM_WAKEUP_APM_TIMER 0x3
  80. #define SMBIOS_SYSTEM_WAKEUP_MODEM_RING 0x4
  81. #define SMBIOS_SYSTEM_WAKEUP_LAN_REMOTE 0x5
  82. #define SMBIOS_SYSTEM_WAKEUP_POWER_SWITCH 0x6
  83. #define SMBIOS_SYSTEM_WAKEUP_PCI_PME 0x7
  84. #define SMBIOS_SYSTEM_WAKEUP_AC_POWER_RESTORED 0x8
  85. //
  86. // Define SMBIOS module/baseboard feature flags.
  87. //
  88. #define SMBIOS_MODULE_MOTHERBOARD (1 << 0)
  89. #define SMBIOS_MODULE_DAUGHTERBOARD_REQUIRED (1 << 1)
  90. #define SMBIOS_MODULE_REMOVABLE (1 << 2)
  91. #define SMBIOS_MODULE_REPLACEABLE (1 << 3)
  92. #define SMBIOS_MODULE_HOT_SWAPPABLE (1 << 4)
  93. //
  94. // Define SMBIOS baseboard types.
  95. //
  96. #define SMBIOS_MODULE_TYPE_UNKNOWN 0x01
  97. #define SMBIOS_MODULE_TYPE_OTHER 0x02
  98. #define SMBIOS_MODULE_TYPE_BLADE 0x03
  99. #define SMBIOS_MODULE_TYPE_SWITCH 0x04
  100. #define SMBIOS_MODULE_TYPE_SYSTEM_MANAGEMENT_MODULE 0x05
  101. #define SMBIOS_MODULE_TYPE_PROCESSOR 0x06
  102. #define SMBIOS_MODULE_TYPE_IO 0x07
  103. #define SMBIOS_MODULE_TYPE_MEMORY 0x08
  104. #define SMBIOS_MODULE_TYPE_DAUGHTERBOARD 0x09
  105. #define SMBIOS_MODULE_TYPE_MOTHERBOARD 0x0A
  106. #define SMBIOS_MODULE_TYPE_PROCESSOR_MEMORY 0x0B
  107. #define SMBIOS_MODULE_TYPE_PROCESSOR_IO 0x0C
  108. #define SMBIOS_MODULE_TYPE_INTERCONNECT 0x0D
  109. //
  110. // Define SMBIOS enclosure types.
  111. //
  112. #define SMBIOS_ENCLOSURE_TYPE_OTHER 0x01
  113. #define SMBIOS_ENCLOSURE_TYPE_UNKNOWN 0x02
  114. #define SMBIOS_ENCLOSURE_TYPE_DESKTOP 0x03
  115. #define SMBIOS_ENCLOSURE_TYPE_LOW_PROFILE_DESKTOP 0x04
  116. #define SMBIOS_ENCLOSURE_TYPE_PIZZA_BOX 0x05
  117. #define SMBIOS_ENCLOSURE_TYPE_MINI_TOWER 0x06
  118. #define SMBIOS_ENCLOSURE_TYPE_TOWER 0x07
  119. #define SMBIOS_ENCLOSURE_TYPE_PORTABLE 0x08
  120. #define SMBIOS_ENCLOSURE_TYPE_LAPTOP 0x09
  121. #define SMBIOS_ENCLOSURE_TYPE_NOTEBOOK 0x0A
  122. #define SMBIOS_ENCLOSURE_TYPE_HANDHELD 0x0B
  123. #define SMBIOS_ENCLOSURE_TYPE_DOCKING_STATION 0x0C
  124. #define SMBIOS_ENCLOSURE_TYPE_ALL_IN_ONE 0x0D
  125. #define SMBIOS_ENCLOSURE_TYPE_SUB_NOTEBOOK 0x0E
  126. #define SMBIOS_ENCLOSURE_TYPE_SPACE_SAVING 0x0F
  127. #define SMBIOS_ENCLOSURE_TYPE_LUNCH_BOX 0x10
  128. #define SMBIOS_ENCLOSURE_TYPE_MAIN_SERVER_CHASSIS 0x11
  129. #define SMBIOS_ENCLOSURE_TYPE_EXPANSION_CHASSIS 0x12
  130. #define SMBIOS_ENCLOSURE_TYPE_SUB_CHASSIS 0x13
  131. #define SMBIOS_ENCLOSURE_TYPE_BUS_EXPANSION_CHASSIS 0x14
  132. #define SMBIOS_ENCLOSURE_TYPE_PERIPHERAL_CHASSIS 0x15
  133. #define SMBIOS_ENCLOSURE_TYPE_RAID_CHASSIS 0x16
  134. #define SMBIOS_ENCLOSURE_TYPE_RACK_MOUNT_CHASSIS 0x17
  135. #define SMBIOS_ENCLOSURE_TYPE_SEALED_CASE_PC 0x18
  136. #define SMBIOS_ENCLOSURE_TYPE_MULTI_SYSTEM_CHASSIS 0x19
  137. #define SMBIOS_ENCLOSURE_TYPE_COMPACT_PCI 0x1A
  138. #define SMBIOS_ENCLOSURE_TYPE_ADVANCED_TCA 0x1B
  139. #define SMBIOS_ENCLOSURE_TYPE_BLADE 0x1C
  140. #define SMBIOS_ENCLOSURE_TYPE_BLADE_ENCLOSURE 0x1D
  141. //
  142. // Define SMBIOS enclosure states.
  143. //
  144. #define SMBIOS_ENCLOSURE_STATE_OTHER 0x01
  145. #define SMBIOS_ENCLOSURE_STATE_UNKNOWN 0x02
  146. #define SMBIOS_ENCLOSURE_STATE_SAFE 0x03
  147. #define SMBIOS_ENCLOSURE_STATE_WARNING 0x04
  148. #define SMBIOS_ENCLOSURE_STATE_CRITICAL 0x05
  149. #define SMBIOS_ENCLOSURE_STATE_NON_RECOVERABLE 0x06
  150. //
  151. // Define SMBIOS enclosure security states.
  152. //
  153. #define SMBIOS_ENCLOSURE_SECURITY_STATE_OTHER 0x01
  154. #define SMBIOS_ENCLOSURE_SECURITY_STATE_UNKNOWN 0x02
  155. #define SMBIOS_ENCLOSURE_SECURITY_STATE_NONE 0x03
  156. #define SMBIOS_ENCLOSURE_SECURITY_STATE_LOCKED 0x04
  157. #define SMBIOS_ENCLOSURE_SECURITY_STATE_UNLOCKED 0x05
  158. //
  159. // Define SMBIOS processor status flags.
  160. //
  161. #define SMBIOS_PROCESSOR_STATUS_POPULATED (1 << 6)
  162. #define SMBIOS_PROCESSOR_STATUS_MASK 0x7
  163. #define SMBIOS_PROCESSOR_STATUS_UNKNOWN 0x0
  164. #define SMBIOS_PROCESSOR_STATUS_ENABLED 0x1
  165. #define SMBIOS_PROCESSOR_STATUS_DISABLED_BY_USER 0x2
  166. #define SMBIOS_PROCESSOR_STATUS_DISABLED_BY_BIOS 0x3
  167. #define SMBIOS_PROCESSOR_STATUS_IDLE 0x4
  168. //
  169. // Define SMBIOS processor types.
  170. //
  171. #define SMBIOS_PROCESSOR_TYPE_OTHER 0x01
  172. #define SMBIOS_PROCESSOR_TYPE_UNKNOWN 0x02
  173. #define SMBIOS_PROCESSOR_TYPE_CENTRAL_PROCESSOR 0x03
  174. #define SMBIOS_PROCESSOR_TYPE_MATH_PROCESSOR 0x04
  175. #define SMBIOS_PROCESSOR_TYPE_DSP_PROCESSOR 0x05
  176. #define SMBIOS_PROCESSOR_TYPE_VIDEO_PROCESSOR 0x06
  177. //
  178. // Define SMBIOS processor characteristics.
  179. //
  180. #define SMBIOS_PROCESSOR_CHARACTERISTIC_RESERVED (1 << 0)
  181. #define SMBIOS_PROCESSOR_CHARACTERISTIC_UNKNOWN (1 << 1)
  182. #define SMBIOS_PROCESSOR_CHARACTERISTIC_64_BIT (1 << 2)
  183. #define SMBIOS_PROCESSOR_CHARACTERISTIC_MULTI_CORE (1 << 3)
  184. #define SMBIOS_PROCESSOR_CHARACTERISTIC_HARDWARE_THREAD (1 << 4)
  185. #define SMBIOS_PROCESSOR_CHARACTERISTIC_EXECUTE_PROTECTION (1 << 5)
  186. #define SMBIOS_PROCESSOR_CHARACTERISTIC_VIRTUALIZATION (1 << 6)
  187. #define SMBIOS_PROCESSOR_CHARACTERISTIC_POWER_CONTROL (1 << 7)
  188. //
  189. // Define cache information bits.
  190. //
  191. #define SMBIOS_CACHE_OPERATIONAL_MODE_MASK (0x3 << 8)
  192. #define SMBIOS_CACHE_WRITE_THROUGH (0x0 << 8)
  193. #define SMBIOS_CACHE_WRITE_BACK (0x1 << 8)
  194. #define SMBIOS_CACHE_VARIES (0x2 << 8)
  195. #define SMBIOS_CACHE_UNKNOWN (0x3 << 8)
  196. #define SMBIOS_CACHE_ENABLED (1 << 7)
  197. #define SMBIOS_CACHE_LOCATION_MASK (0x3 << 5)
  198. #define SMBIOS_CACHE_LOCATION_INTERNAL (0x0 << 5)
  199. #define SMBIOS_CACHE_LOCATION_EXTERNAL (0x1 << 5)
  200. #define SMBIOS_CACHE_LOCATION_UNKNOWN (0x3 << 5)
  201. #define SMBIOS_CACHE_SOCKETED (1 << 3)
  202. #define SMBIOS_CACHE_LEVEL_MASK 0x7
  203. #define SMBIOS_CACHE_GRANULARITY_64K (1 << 15)
  204. #define SMBIOS_CACHE_SRAM_OTHER (1 << 0)
  205. #define SMBIOS_CACHE_SRAM_UNKNOWN (1 << 1)
  206. #define SMBIOS_CACHE_SRAM_NON_BURST (1 << 2)
  207. #define SMBIOS_CACHE_SRAM_BURST (1 << 3)
  208. #define SMBIOS_CACHE_SRAM_PIPELINE_BURST (1 << 4)
  209. #define SMBIOS_CACHE_SRAM_SYNCHRONOUS (1 << 5)
  210. #define SMBIOS_CACHE_SRAM_ASYNCHRONOUS (1 << 6)
  211. #define SMBIOS_CACHE_ERROR_CORRECTION_OTHER 0x01
  212. #define SMBIOS_CACHE_ERROR_CORRECTION_UNKNOWN 0x02
  213. #define SMBIOS_CACHE_ERROR_CORRECTION_NONE 0x03
  214. #define SMBIOS_CACHE_ERROR_CORRECTION_PARITY 0x04
  215. #define SMBIOS_CACHE_ERROR_CORRECTION_SINGLE_BIT_ECC 0x05
  216. #define SMBIOS_CACHE_ERROR_CORRECTION_MULTI_BIT_ECC 0x06
  217. #define SMBIOS_CACHE_TYPE_OTHER 0x01
  218. #define SMBIOS_CACHE_TYPE_UNKNOWN 0x02
  219. #define SMBIOS_CACHE_TYPE_INSTRUCTION 0x03
  220. #define SMBIOS_CACHE_TYPE_DATA 0x04
  221. #define SMBIOS_CACHE_TYPE_UNIFIED 0x05
  222. #define SMBIOS_CACHE_ASSOCIATIVITY_OTHER 0x01
  223. #define SMBIOS_CACHE_ASSOCIATIVITY_UNKNOWN 0x02
  224. #define SMBIOS_CACHE_ASSOCIATIVITY_DIRECT_MAPPED 0x03
  225. #define SMBIOS_CACHE_ASSOCIATIVITY_2_WAY_SET 0x04
  226. #define SMBIOS_CACHE_ASSOCIATIVITY_4_WAY_SET 0x05
  227. #define SMBIOS_CACHE_ASSOCIATIVITY_FULL 0x06
  228. #define SMBIOS_CACHE_ASSOCIATIVITY_8_WAY_SET 0x07
  229. #define SMBIOS_CACHE_ASSOCIATIVITY_16_WAY_SET 0x08
  230. #define SMBIOS_CACHE_ASSOCIATIVITY_12_WAY_SET 0x09
  231. #define SMBIOS_CACHE_ASSOCIATIVITY_24_WAY_SET 0x0A
  232. #define SMBIOS_CACHE_ASSOCIATIVITY_32_WAY_SET 0x0B
  233. #define SMBIOS_CACHE_ASSOCIATIVITY_48_WAY_SET 0x0C
  234. #define SMBIOS_CACHE_ASSOCIATIVITY_64_WAY_SET 0x0D
  235. #define SMBIOS_CACHE_ASSOCIATIVITY_20_WAY_SET 0x0E
  236. //
  237. // Define port and connector types.
  238. //
  239. #define SMBIOS_CONNECTOR_NONE 0x00
  240. #define SMBIOS_CONNECTOR_CENTRONICS 0x01
  241. #define SMBIOS_CONNECTOR_MINI_CENTRONICS 0x02
  242. #define SMBIOS_CONNECTOR_PROPRIETARY 0x03
  243. #define SMBIOS_CONNECTOR_DB25_MALE 0x04
  244. #define SMBIOS_CONNECTOR_DB25_FEMALE 0x05
  245. #define SMBIOS_CONNECTOR_DB15_MALE 0x06
  246. #define SMBIOS_CONNECTOR_DB15_FEMALE 0x07
  247. #define SMBIOS_CONNECTOR_DB9_MALE 0x08
  248. #define SMBIOS_CONNECTOR_DB9_FEMALE 0x09
  249. #define SMBIOS_CONNECTOR_RJ11 0x0A
  250. #define SMBIOS_CONNECTOR_RJ45 0x0B
  251. #define SMBIOS_CONNECTOR_50_PIN_MINISCSI 0x0C
  252. #define SMBIOS_CONNECTOR_MINI_DIN 0x0D
  253. #define SMBIOS_CONNECTOR_MICRO_DIN 0x0E
  254. #define SMBIOS_CONNECTOR_PS2 0x0F
  255. #define SMBIOS_CONNECTOR_INFRARED 0x10
  256. #define SMBIOS_CONNECTOR_HP_HIL 0x11
  257. #define SMBIOS_CONNECTOR_ACCESS_BUS_USB 0x12
  258. #define SMBIOS_CONNECTOR_SSA_SCSI 0x13
  259. #define SMBIOS_CONNECTOR_CIRCULAR_DIN8_MALE 0x14
  260. #define SMBIOS_CONNECTOR_CIRCULAR_DIN8_FEMALE 0x15
  261. #define SMBIOS_CONNECTOR_ON_BOARD_IDE 0x16
  262. #define SMBIOS_CONNECTOR_ON_BOARD_FLOPPY 0x17
  263. #define SMBIOS_CONNECTOR_9_PIN_DUAL_INLINE 0x18
  264. #define SMBIOS_CONNECTOR_25_PIN_DUAL_INLINE 0x19
  265. #define SMBIOS_CONNECTOR_50_PIN_DUAL_INLINE 0x1A
  266. #define SMBIOS_CONNECTOR_68_PIN_DUAL_INLINE 0x1B
  267. #define SMBIOS_CONNECTOR_CDROM_SOUND_INPUT 0x1C
  268. #define SMBIOS_CONNECTOR_MINI_CENTRONICS_TYPE_14 0x1D
  269. #define SMBIOS_CONNECTOR_MINI_CENTRONICS_TYPE_26 0x1E
  270. #define SMBIOS_CONNECTOR_HEADPHONES 0x1F
  271. #define SMBIOS_CONNECTOR_BNC 0x20
  272. #define SMBIOS_CONNECTOR_1394 0x21
  273. #define SMBIOS_CONNECTOR_SAS_SATA 0x22
  274. #define SMBIOS_CONNECTOR_PC98 0xA0
  275. #define SMBIOS_CONNECTOR_PC98_HIRESO 0xA1
  276. #define SMBIOS_CONNECTOR_PCH98 0xA2
  277. #define SMBIOS_CONNECTOR_PC98_NOTE 0xA3
  278. #define SMBIOS_CONNECTOR_PC98_FULL 0xA4
  279. #define SMBIOS_CONNECTOR_OTHER 0xFF
  280. #define SMBIOS_PORT_NONE 0x00
  281. #define SMBIOS_PORT_PARALLEL_XT_AT 0x01
  282. #define SMBIOS_PORT_PARALLEL_PS2 0x02
  283. #define SMBIOS_PORT_PARALLEL_ECP 0x03
  284. #define SMBIOS_PORT_PARALLEL_EPP 0x04
  285. #define SMBIOS_PORT_PARALLEL_ECP_EPP 0x05
  286. #define SMBIOS_PORT_SERIAL_XT_AT 0x06
  287. #define SMBIOS_PORT_SERIAL_16450 0x07
  288. #define SMBIOS_PORT_SERIAL_16550 0x08
  289. #define SMBIOS_PORT_SERIAL_16550A 0x09
  290. #define SMBIOS_PORT_SCSI 0x0A
  291. #define SMBIOS_PORT_MIDI 0x0B
  292. #define SMBIOS_PORT_JOYSTICK 0x0C
  293. #define SMBIOS_PORT_KEYBOARD 0x0D
  294. #define SMBIOS_PORT_MOUSE 0x0E
  295. #define SMBIOS_PORT_SSA_SCSI 0x0F
  296. #define SMBIOS_PORT_USB 0x10
  297. #define SMBIOS_PORT_FIREWIRE 0x11
  298. #define SMBIOS_PORT_PCMCIA_TYPE_I 0x12
  299. #define SMBIOS_PORT_PCMCIA_TYPE_II 0x13
  300. #define SMBIOS_PORT_PCMCIA_TYPE_III 0x14
  301. #define SMBIOS_PORT_CARDBUS 0x15
  302. #define SMBIOS_PORT_ACCESS_BUS_PORT 0x16
  303. #define SMBIOS_PORT_SCSI_II 0x17
  304. #define SMBIOS_PORT_SCSI_WIDE 0x18
  305. #define SMBIOS_PORT_PC98 0x19
  306. #define SMBIOS_PORT_PC98_HIRESO 0x1A
  307. #define SMBIOS_PORT_PCH98 0x1B
  308. #define SMBIOS_PORT_VIDEO 0x1C
  309. #define SMBIOS_PORT_AUDIO 0x1D
  310. #define SMBIOS_PORT_MODEM 0x1E
  311. #define SMBIOS_PORT_NETWORK 0x1F
  312. #define SMBIOS_PORT_SATA 0x20
  313. #define SMBIOS_PORT_SAS 0x21
  314. #define SMBIOS_PORT_8251 0xA0
  315. #define SMBIOS_PORT_8251_FIFO 0xA1
  316. #define SMBIOS_PORT_OTHER 0xFF
  317. //
  318. // Define SMBIOS slot types.
  319. //
  320. #define SMBIOS_SLOT_TYPE_OTHER 0x01
  321. #define SMBIOS_SLOT_TYPE_UNKNOWN 0x02
  322. #define SMBIOS_SLOT_TYPE_ISA 0x03
  323. #define SMBIOS_SLOT_TYPE_MCA 0x04
  324. #define SMBIOS_SLOT_TYPE_EISA 0x05
  325. #define SMBIOS_SLOT_TYPE_PCI 0x06
  326. #define SMBIOS_SLOT_TYPE_PCMCIA 0x07
  327. #define SMBIOS_SLOT_TYPE_VESA 0x08
  328. #define SMBIOS_SLOT_TYPE_PROPRIETARY 0x09
  329. #define SMBIOS_SLOT_TYPE_PROCESSOR 0x0A
  330. #define SMBIOS_SLOT_TYPE_PROPRIETARY_MEMORY 0x0B
  331. #define SMBIOS_SLOT_TYPE_IO_RISER 0x0C
  332. #define SMBIOS_SLOT_TYPE_NUBUS 0x0D
  333. #define SMBIOS_SLOT_TYPE_PCI_66MHZ 0x0E
  334. #define SMBIOS_SLOT_TYPE_AGP 0x0F
  335. #define SMBIOS_SLOT_TYPE_AGP_2X 0x10
  336. #define SMBIOS_SLOT_TYPE_AGP_4X 0x11
  337. #define SMBIOS_SLOT_TYPE_PCI_X 0x12
  338. #define SMBIOS_SLOT_TYPE_AGP_8X 0x13
  339. #define SMBIOS_SLOT_TYPE_PC98_C20 0xA0
  340. #define SMBIOS_SLOT_TYPE_PC98_C24 0xA1
  341. #define SMBIOS_SLOT_TYPE_PC98_E 0xA2
  342. #define SMBIOS_SLOT_TYPE_PC98_LOCAL_BUS 0xA3
  343. #define SMBIOS_SLOT_TYPE_PC98_CARD 0xA4
  344. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS 0xA5
  345. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_X1 0xA6
  346. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_X2 0xA7
  347. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_X4 0xA8
  348. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_X8 0xA9
  349. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_X16 0xAA
  350. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_G2 0xAB
  351. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_G2_X1 0xAC
  352. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_G2_X2 0xAD
  353. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_G2_X4 0xAE
  354. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_G2_X8 0xAF
  355. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_G2_X16 0xB0
  356. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_G3 0xB1
  357. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_G3_X1 0xB2
  358. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_G3_X2 0xB3
  359. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_G3_X4 0xB4
  360. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_G3_X8 0xB5
  361. #define SMBIOS_SLOT_TYPE_PCI_EXPRESS_G3_X16 0xB6
  362. #define SMBIOS_SLOT_WIDTH_OTHER 0x01
  363. #define SMBIOS_SLOT_WIDTH_UNKNOWN 0x02
  364. #define SMBIOS_SLOT_WIDTH_8_BIT 0x03
  365. #define SMBIOS_SLOT_WIDTH_16_BIT 0x04
  366. #define SMBIOS_SLOT_WIDTH_32_BIT 0x05
  367. #define SMBIOS_SLOT_WIDTH_64_BIT 0x06
  368. #define SMBIOS_SLOT_WIDTH_128_BIT 0x07
  369. #define SMBIOS_SLOT_WIDTH_1X 0x08
  370. #define SMBIOS_SLOT_WIDTH_2X 0x09
  371. #define SMBIOS_SLOT_WIDTH_4X 0x0A
  372. #define SMBIOS_SLOT_WIDTH_8X 0x0B
  373. #define SMBIOS_SLOT_WIDTH_12X 0x0C
  374. #define SMBIOS_SLOT_WIDTH_16X 0x0D
  375. #define SMBIOS_SLOT_WIDTH_32X 0x0E
  376. #define SMBIOS_SLOT_USAGE_OTHER 0x01
  377. #define SMBIOS_SLOT_USAGE_UNKNOWN 0x02
  378. #define SMBIOS_SLOT_USAGE_AVAILABLE 0x03
  379. #define SMBIOS_SLOT_USAGE_IN_USE 0x04
  380. #define SMBIOS_SLOT_LENGTH_OTHER 0x01
  381. #define SMBIOS_SLOT_LENGTH_UNKNOWN 0x02
  382. #define SMBIOS_SLOT_LENGTH_SHORT 0x03
  383. #define SMBIOS_SLOT_LENGTH_LONG 0x04
  384. #define SMBIOS_SLOT_CHARACTERISTIC1_UNKNOWN (1 << 0)
  385. #define SMBIOS_SLOT_CHARACTERISTIC1_5_VOLTS (1 << 1)
  386. #define SMBIOS_SLOT_CHARACTERISTIC1_3V3_VOLTS (1 << 2)
  387. #define SMBIOS_SLOT_CHARACTERISTIC1_OPENING_SHARED (1 << 3)
  388. #define SMBIOS_SLOT_CHARACTERISTIC1_PC_CARD_16 (1 << 4)
  389. #define SMBIOS_SLOT_CHARACTERISTIC1_CARDBUS (1 << 5)
  390. #define SMBIOS_SLOT_CHARACTERISTIC1_ZOOM_VIDEO (1 << 6)
  391. #define SMBIOS_SLOT_CHARACTERISTIC1_MODEM_RING_RESUME (1 << 7)
  392. #define SMBIOS_SLOT_CHARACTERISTIC2_PCI_PME (1 << 0)
  393. #define SMBIOS_SLOT_CHARACTERISTIC2_HOT_PLUG (1 << 1)
  394. #define SMBIOS_SLOT_CHARACTERISTIC2_SMBUS (1 << 2)
  395. //
  396. // Define SMBIOS memory array type bits.
  397. //
  398. #define SMBIOS_MEMORY_LOCATION_OTHER 0x01
  399. #define SMBIOS_MEMORY_LOCATION_UNKNOWN 0x02
  400. #define SMBIOS_MEMORY_LOCATION_MOTHERBOARD 0x03
  401. #define SMBIOS_MEMORY_LOCATION_ISA_CARD 0x04
  402. #define SMBIOS_MEMORY_LOCATION_EISA_CARD 0x05
  403. #define SMBIOS_MEMORY_LOCATION_PCI_CARD 0x06
  404. #define SMBIOS_MEMORY_LOCATION_MCA_CARD 0x07
  405. #define SMBIOS_MEMORY_LOCATION_PCMCIA_CARD 0x08
  406. #define SMBIOS_MEMORY_LOCATION_PROPRIETARY_CARD 0x09
  407. #define SMBIOS_MEMORY_LOCATION_NUBUS 0x0A
  408. #define SMBIOS_MEMORY_LOCATION_PC98_C20_CARD 0xA0
  409. #define SMBIOS_MEMORY_LOCATION_PC98_C24_CARD 0xA1
  410. #define SMBIOS_MEMORY_LOCATION_PC98_E_CARD 0xA2
  411. #define SMBIOS_MEMORY_LOCATION_PC98_LOCAL_BUS_CARD 0xA3
  412. #define SMBIOS_MEMORY_USE_OTHER 0x01
  413. #define SMBIOS_MEMORY_USE_UNKNOWN 0x02
  414. #define SMBIOS_MEMORY_USE_SYSTEM_MEMORY 0x03
  415. #define SMBIOS_MEMORY_USE_VIDEO_MEMORY 0x04
  416. #define SMBIOS_MEMORY_USE_FLASH_MEMORY 0x05
  417. #define SMBIOS_MEMORY_USE_NON_VOLATILE_RAM 0x06
  418. #define SMBIOS_MEMORY_USE_CACHE_MEMORY 0x07
  419. #define SMBIOS_MEMORY_ERROR_CORRECTION_OTHER 0x01
  420. #define SMBIOS_MEMORY_ERROR_CORRECTION_UNKNOWN 0x02
  421. #define SMBIOS_MEMORY_ERROR_CORRECTION_NONE 0x03
  422. #define SMBIOS_MEMORY_ERROR_CORRECTION_PARITY 0x04
  423. #define SMBIOS_MEMORY_ERROR_CORRECTION_SINGLE_BIT_ECC 0x05
  424. #define SMBIOS_MEMORY_ERROR_CORRECTION_MULTI_BIT_ECC 0x06
  425. #define SMBIOS_MEMORY_ERROR_CORRECTION_CRC 0x07
  426. //
  427. // Define SMBIOS memory device flags.
  428. //
  429. #define SMBIOS_MEMORY_FORM_OTHER 0x01
  430. #define SMBIOS_MEMORY_FORM_UNKNOWN 0x02
  431. #define SMBIOS_MEMORY_FORM_SIMM 0x03
  432. #define SMBIOS_MEMORY_FORM_SIP 0x04
  433. #define SMBIOS_MEMORY_FORM_CHIP 0x05
  434. #define SMBIOS_MEMORY_FORM_DIP 0x06
  435. #define SMBIOS_MEMORY_FORM_ZIP 0x07
  436. #define SMBIOS_MEMORY_FORM_PROPRIETARY_CARD 0x08
  437. #define SMBIOS_MEMORY_FORM_DIMM 0x09
  438. #define SMBIOS_MEMORY_FORM_TSOP 0x0A
  439. #define SMBIOS_MEMORY_FORM_ROW_OF_CHIPS 0x0B
  440. #define SMBIOS_MEMORY_FORM_RIMM 0x0C
  441. #define SMBIOS_MEMORY_FORM_SODIMM 0x0D
  442. #define SMBIOS_MEMORY_FORM_SRIMM 0x0E
  443. #define SMBIOS_MEMORY_FORM_FB_DIMM 0x0F
  444. #define SMBIOS_MEMORY_DEVICE_OTHER 0x01
  445. #define SMBIOS_MEMORY_DEVICE_UNKNOWN 0x02
  446. #define SMBIOS_MEMORY_DEVICE_DRAM 0x03
  447. #define SMBIOS_MEMORY_DEVICE_EDRAM 0x04
  448. #define SMBIOS_MEMORY_DEVICE_VRAM 0x05
  449. #define SMBIOS_MEMORY_DEVICE_SRAM 0x06
  450. #define SMBIOS_MEMORY_DEVICE_RAM 0x07
  451. #define SMBIOS_MEMORY_DEVICE_ROM 0x08
  452. #define SMBIOS_MEMORY_DEVICE_FLASH 0x09
  453. #define SMBIOS_MEMORY_DEVICE_EEPROM 0x0A
  454. #define SMBIOS_MEMORY_DEVICE_FEPROM 0x0B
  455. #define SMBIOS_MEMORY_DEVICE_EPROM 0x0C
  456. #define SMBIOS_MEMORY_DEVICE_CDRAM 0x0D
  457. #define SMBIOS_MEMORY_DEVICE_3DRAM 0x0E
  458. #define SMBIOS_MEMORY_DEVICE_SDRAM 0x0F
  459. #define SMBIOS_MEMORY_DEVICE_SGRAM 0x10
  460. #define SMBIOS_MEMORY_DEVICE_RDRAM 0x11
  461. #define SMBIOS_MEMORY_DEVICE_DDR 0x12
  462. #define SMBIOS_MEMORY_DEVICE_DDR2 0x13
  463. #define SMBIOS_MEMORY_DEVICE_DDR2_FB_DIMM 0x14
  464. #define SMBIOS_MEMORY_DEVICE_DDR3 0x18
  465. #define SMBIOS_MEMORY_DEVICE_FBD2 0x19
  466. #define SMBIOS_MEMORY_DETAIL_OTHER (1 << 1)
  467. #define SMBIOS_MEMORY_DETAIL_UNKNOWN (1 << 2)
  468. #define SMBIOS_MEMORY_DETAIL_FAST_PAGED (1 << 3)
  469. #define SMBIOS_MEMORY_DETAIL_STATIC_COLUMN (1 << 4)
  470. #define SMBIOS_MEMORY_DETAIL_PSEUDO_STATIC (1 << 5)
  471. #define SMBIOS_MEMORY_DETAIL_RAMBUS (1 << 6)
  472. #define SMBIOS_MEMORY_DETAIL_SYNCHRONOUS (1 << 7)
  473. #define SMBIOS_MEMORY_DETAIL_CMOS (1 << 8)
  474. #define SMBIOS_MEMORY_DETAIL_EDO (1 << 9)
  475. #define SMBIOS_MEMORY_DETAIL_WINDOW_DRAM (1 << 10)
  476. #define SMBIOS_MEMORY_DETAIL_CACHE_DRAM (1 << 11)
  477. #define SMBIOS_MEMORY_DETAIL_NON_VOLATILE (1 << 12)
  478. #define SMBIOS_MEMORY_DETAIL_BUFFERED (1 << 13)
  479. #define SMBIOS_MEMORY_DETAIL_UNBUFFERED (1 << 14)
  480. #define SMBIOS_MEMORY_DETAIL_LRDIMM (1 << 15)
  481. //
  482. // Define boot status data.
  483. //
  484. #define SMBIOS_BOOT_NO_ERRORS 0
  485. #define SMBIOS_BOOT_NO_BOOTABLE_MEDIA 1
  486. #define SMBIOS_BOOT_NORMAL_OS_FAILED_LOAD 2
  487. #define SMBIOS_BOOT_FIRMWARE_DETECTED_HARDWARE_FAILURE 3
  488. #define SMBIOS_BOOT_OS_DETECTED_HARDWARE_FAILURE 4
  489. #define SMBIOS_BOOT_USER_REQUESTED_BOOT 5
  490. #define SMBIOS_BOOT_SECURITY_VIOLATION 6
  491. #define SMBIOS_BOOT_PREVIOUSLY_REQUESTED_IMAGE 7
  492. #define SMBIOS_BOOT_WATCHDOG_RESET 8
  493. //
  494. // ------------------------------------------------------ Data Type Definitions
  495. //
  496. typedef enum _SMBIOS_TABLE_TYPE {
  497. SmbiosBiosInformation = 0,
  498. SmbiosSystemInformation = 1,
  499. SmbiosModuleInformation = 2,
  500. SmbiosSystemEnclosure = 3,
  501. SmbiosProcessorInformation = 4,
  502. SmbiosCacheInformation = 7,
  503. SmbiosPortConnector = 8,
  504. SmbiosSystemSlots = 9,
  505. SmbiosOemStrings = 11,
  506. SmbiosPhysicalMemoryArray = 16,
  507. SmbiosMemoryDevice = 17,
  508. SmbiosMemoryArrayMappedAddress = 19,
  509. SmbiosMemoryDeviceMappedAddress = 20,
  510. SmbiosSystemBootInformation = 32,
  511. SmbiosInactive = 126,
  512. SmbiosEndOfTable = 127
  513. } SMBIOS_TABLE_TYPE, *PSMBIOS_TABLE_TYPE;
  514. /*++
  515. Structure Description:
  516. This structure defines the entry point structure for the SMBIOS tables.
  517. On legacy PC/AT systems, this structure is located somewhere between
  518. address 0xF0000 and 0xFFFFF aligned to a 16-byte boundary.
  519. Members:
  520. AnchorString - Stores the string constant '_SM_'.
  521. Checksum - Stores the checksum of the table bytes. When all bytes including
  522. this checksum are summed, the result should be zero. The length to
  523. checksum is the entry point length field.
  524. EntryPointLength - Stores the length of the entry point structure, and the
  525. number of bytes to checksum. This should be 0x1F.
  526. MajorVersion - Stores the major version of the specification implemented in
  527. this table structure.
  528. MinorVersion - Stores the minor version of the specification implemtned in
  529. this table structure.
  530. MaxStructureSize - Stores the size of the largest structure, in bytes, and
  531. encompasses the structure's formatted area and text strings.
  532. EntryPointRevision - Stores the format of the formatted area. This is
  533. currently set to zero, and the formatted area is reserved.
  534. FormattedArea - Stores reserved bytes that may be used in the future.
  535. IntermediateAnchor - Stores the intermediate anchor string "_DMI_" (not
  536. null terminated).
  537. IntermediateChecksum - Stores the checksum such that all bytes starting at
  538. the intermediate anchor and going for length 0xF sum to zero.
  539. StructureTableLength - Stores the length of the SMBIOS structure table,
  540. in bytes.
  541. StructureTableAddress - Stores the 32-bit physical address of the read-only
  542. SMBIOS structure table. These structures are fully-packed.
  543. NumberOfStructures - Stores the count of structures in the array.
  544. BcdRevision - Stores the major and minor SMBIOS specification version
  545. numbers in binary coded decimal form. Revision 2.1 for instance would
  546. have a value 0x21.
  547. --*/
  548. typedef struct _SMBIOS_ENTRY_POINT {
  549. ULONG AnchorString;
  550. UCHAR Checksum;
  551. UCHAR EntryPointLength;
  552. UCHAR MajorVersion;
  553. UCHAR MinorVersion;
  554. USHORT MaxStructureSize;
  555. UCHAR EntryPointRevision;
  556. UCHAR FormattedArea[5];
  557. UCHAR IntermediateAnchor[5];
  558. UCHAR IntermediateChecksum;
  559. USHORT StructureTableLength;
  560. ULONG StructureTableAddress;
  561. USHORT NumberOfStructures;
  562. UCHAR BcdRevision;
  563. } PACKED SMBIOS_ENTRY_POINT, *PSMBIOS_ENTRY_POINT;
  564. /*++
  565. Structure Description:
  566. This structure defines the common header that all SMBIOS structures start
  567. with.
  568. Members:
  569. Type - Stores the structure type, which defines the remaining content of
  570. the structure after this header.
  571. Length - Stores the length of the formatted area of the structure. The
  572. unformatted area always ends with a double null character (two zero
  573. bytes).
  574. Handle - Stores the structure's handle, a unique 16-bit number in the range
  575. of 0x0000 to 0xFFFE (or 0xFEFF for version 2.1 and later).
  576. --*/
  577. typedef struct _SMBIOS_HEADER {
  578. UCHAR Type;
  579. UCHAR Length;
  580. USHORT Handle;
  581. } PACKED SMBIOS_HEADER, *PSMBIOS_HEADER;
  582. /*++
  583. Structure Description:
  584. This structure defines the SMBIOS BIOS information structure.
  585. Members:
  586. Header - Stores the common header. The structure type is 0, BIOS
  587. information.
  588. Vendor - Stores the string index of the BIOS Vendor name string.
  589. BiosVersion - Stores the string index of the BIOS version string.
  590. BiosStartingAddressSegment - Stores the segment location of the BIOS
  591. starting address. The size of the runtime BIOS can be computed by
  592. subtracting the starting address segment from 0x10000 and multiplying
  593. the result by 16.
  594. BiosReleaseDate - Stores the string index of the BIOS release date. This
  595. should be in the format mm/dd/yyyy. The year could be a two digit year,
  596. in which case 19xx is assumed.
  597. BiosRomSize - Stores the size, where 64K * (size + 1) is the size of the
  598. physical device containing the BIOS, in bytes.
  599. BiosCharacteristics - Stores a bitfield of BIOS characteristics.
  600. BiosCharacteristicsExtensions - Stores additional BIOS characteristics.
  601. BiosMajorRelease - Stores the major release number of the BIOS.
  602. BiosMinorRelease - Stores the minor release number of the BIOS.
  603. EmbeddedControllerFirmwareMajorRelease - Stores the major release number of
  604. the firmware in the embedded controller.
  605. EmbeddedControllerFirmwareMinorRelease - Stores the minor release number of
  606. the firmware in the embedded controller.
  607. --*/
  608. typedef struct _SMBIOS_BIOS_INFORMATION {
  609. SMBIOS_HEADER Header;
  610. UCHAR Vendor;
  611. UCHAR BiosVersion;
  612. USHORT BiosStartingAddressSegment;
  613. UCHAR BiosReleaseDate;
  614. UCHAR BiosRomSize;
  615. ULONGLONG BiosCharacteristics;
  616. ULONG BiosCharacteristicsExtensions;
  617. UCHAR BiosMajorRelease;
  618. UCHAR BiosMinorRelease;
  619. UCHAR EmbeddedControllerFirmwareMajorRelease;
  620. UCHAR EmbeddedControllerFirmwareMinorRelease;
  621. } PACKED SMBIOS_BIOS_INFORMATION, *PSMBIOS_BIOS_INFORMATION;
  622. /*++
  623. Structure Description:
  624. This structure defines the SMBIOS system information structure.
  625. Members:
  626. Header - Stores the common header. The structure type is 1, system
  627. information.
  628. Manufacturer - Stores the string index of the system manufacturer.
  629. ProductName - Stores the string index of the product name.
  630. Version - Stores the string index of the product version string.
  631. SerialNumber - Stores the string index of the serial number string.
  632. Uuid - Stores the universally unique identifier of the system. If the value
  633. is all ones, the ID is not currently set, but it can be. If the value
  634. is all zeros, then the ID is not set.
  635. WakeupType - Stores the event that caused the system to power up. See the
  636. SMBIOS_SYSTEM_WAKEUP_* definitions.
  637. SkuNumber - Stores the index of the SKU number string. This text identifies
  638. a particular computer configuration for sale.
  639. Family - Stores the index of the family string. A family refers to a set of
  640. computers that are similar but not identical from a hardware or
  641. software point of view.
  642. --*/
  643. typedef struct _SMBIOS_SYSTEM_INFORMATION {
  644. SMBIOS_HEADER Header;
  645. UCHAR Manufacturer;
  646. UCHAR ProductName;
  647. UCHAR Version;
  648. UCHAR SerialNumber;
  649. UCHAR Uuid[16];
  650. UCHAR WakeupType;
  651. UCHAR SkuNumber;
  652. UCHAR Family;
  653. } PACKED SMBIOS_SYSTEM_INFORMATION, *PSMBIOS_SYSTEM_INFORMATION;
  654. /*++
  655. Structure Description:
  656. This structure defines the SMBIOS module/baseboard information structure.
  657. Members:
  658. Header - Stores the common header. The structure type is 1, system
  659. information.
  660. Manufacturer - Stores the string index of the manufacturer string.
  661. Product - Stores the string index of the product string.
  662. Version - Stores the string index of the product version.
  663. SerialNumber - Stores the string index of the serial number.
  664. AssetTag - Stores the string index of the asset tag.
  665. FeatureFlags - Stores the bitfield of feature flags for the baseboard.
  666. See SMBIOS_MODULE_* definitions.
  667. ChassisLocation - Stores the string index of the string that describes the
  668. board's location within the chassis referenced by the chassis handle.
  669. ChassisHandle - Stores the table handle of the chassis this board resides
  670. in.
  671. BoardType - Stores the board type. See SMBIOS_MODULE_TYPE_* definitions.
  672. NumberOfContainedObjectHandles - Stores the count of handles to objects
  673. within this board.
  674. ContainedObjectHandles - Stores a variable sized array of handles to
  675. other objects that are contained within this module or baseboard.
  676. --*/
  677. typedef struct _SMBIOS_MODULE_INFORMATION {
  678. SMBIOS_HEADER Header;
  679. UCHAR Manufacturer;
  680. UCHAR Product;
  681. UCHAR Version;
  682. UCHAR SerialNumber;
  683. UCHAR AssetTag;
  684. UCHAR FeatureFlags;
  685. UCHAR ChassisLocation;
  686. USHORT ChassisHandle;
  687. UCHAR BoardType;
  688. UCHAR NumberOfContainedObjectHandles;
  689. USHORT ContainedObjectHandles[ANYSIZE_ARRAY];
  690. } PACKED SMBIOS_MODULE_INFORMATION, *PSMBIOS_MODULE_INFORMATION;
  691. /*++
  692. Structure Description:
  693. This structure defines an SMBIOS enclosure or chassis.
  694. Members:
  695. Header - Stores the common header. The structure type is 3, enclosure or
  696. chassis.
  697. Manufacturer - Stores the string index of the chassis manufacturer.
  698. Type - Stores the chassis type. Bit 7 is set if a chassis lock is present.
  699. Bits 6:0 correspond to SMBIOS_ENCLOSURE_TYPE_* definitions.
  700. Version - Stores the index of the version string.
  701. SerialNumber - Stores the string index of the serial number.
  702. AssetTag - Stores the string index of the asset tag.
  703. BootState - Stores the state of the enclosure when it was last booted.
  704. PowerSupplyState - Stores the state of the enclosure's power supply when it
  705. was last booted.
  706. ThermalState - Stores the thermal state of the enclosure when it was last
  707. booted.
  708. SecurityStatus - Stores the security state of the enclosure when it was
  709. last booted.
  710. OemDefined - Stores OEM defined data.
  711. Height - Stores the enclosure height, in U units. A U is a standard unit of
  712. server height equal to 1.75 inches or 4.445 cm. A value of 0 indicates
  713. the height in unspecified.
  714. NumberOfPowerCords - Stores the number of power cords associated with the
  715. enclosure. Zero means the value is unspecified.
  716. ElementCount - Stores the number of contained elements following this
  717. structure.
  718. ElementRecordLength - Stores the number of each contained element record
  719. in the elements following this structure.
  720. SkuNumber - Stores the string index of the chassis SKU number.
  721. --*/
  722. typedef struct _SMBIOS_ENCLOSURE {
  723. SMBIOS_HEADER Header;
  724. UCHAR Manufacturer;
  725. UCHAR Type;
  726. UCHAR Version;
  727. UCHAR SerialNumber;
  728. UCHAR AssetTag;
  729. UCHAR BootState;
  730. UCHAR PowerSupplyState;
  731. UCHAR ThermalState;
  732. UCHAR SecurityStatus;
  733. ULONG OemDefined;
  734. UCHAR Height;
  735. UCHAR NumberOfPowerCords;
  736. UCHAR ElementCount;
  737. UCHAR ElementLength;
  738. UCHAR SkuNumber;
  739. } PACKED SMBIOS_ENCLOSURE, *PSMBIOS_ENCLOSURE;
  740. /*++
  741. Structure Description:
  742. This structure defines an SMBIOS contained enclosure. These elements are
  743. found inside an enclosure structure.
  744. Members:
  745. ElementType - Stores the type of element associated with this record. Bit 7
  746. indicates whether this is an SMBIOS structure type enumeration (1) or
  747. an SMBIOS baseboard type enumeration (0). Bits 6:0 specify either the
  748. board type enumeration or the structure type.
  749. ElementMinimum - Stores the minimum number of the element type that can be
  750. installed in the chassis for the chassis to properly operate.
  751. ElementMaximum - Stores the maximum number of the element type that can be
  752. installed in the chassis.
  753. --*/
  754. typedef struct _SMBIOS_CONTAINED_ENCLOSURE {
  755. UCHAR ElementType;
  756. UCHAR ElementMinimum;
  757. UCHAR ElementMaximum;
  758. } PACKED SMBIOS_CONTAINED_ENCLOSURE, *PSMBIOS_CONTAINED_ENCLOSURE;
  759. /*++
  760. Structure Description:
  761. This structure defines SMBIOS processor information.
  762. Members:
  763. Header - Stores the common header. The structure type is 4, processor
  764. information
  765. SocketDesignation - Stores the string index of the processor socket type.
  766. ProcessorType - Stores the processor type.
  767. ProcessorFamily - Stores the processor family.
  768. ProcessorManufacturer - Stores the string index of the processor
  769. manufacturer.
  770. ProcessorId - Stores the identifier of the processor.
  771. ProcessorVersion - Stores the string index of the processor version.
  772. Voltage - Stores the processor voltage.
  773. ExternalClock - Stores the external clock frequency, in megahertz. This is
  774. 0 if the speed is unknown.
  775. MaxSpeed - Stores the maximum processor speed, in megahertz. This is 0 if
  776. the speed is unknown.
  777. CurrentSpeed - Stores the current speed at system boot, in megahertz. This
  778. is 0 if unknown.
  779. Status - Stores the processor status. See SMBIOS_PROCESSOR_STATUS_*
  780. definitions.
  781. ProcessorUpgrade - Stores the upgrad information.
  782. L1CacheHandle - Stores the handle of the L1 cache information. Set to
  783. 0xFFFF if no cache information is supplied.
  784. L2CacheHandle - Stores the handle of the L2 cache information. Set to
  785. 0xFFFF if no cache information is supplied.
  786. L3CacheHandle - Stores the handle of the L3 cache information. Set to
  787. 0xFFFF if no cache information is supplied.
  788. SerialNumber - Stores the string index of the serial number.
  789. AssetTag - Stores the string index of the asset tag.
  790. PartNumber - Stores the string index for the part number.
  791. CoreCount - Stores the number of core per processor socket. If unknown,
  792. this value is zero.
  793. ThreadCount - Stores the number of threads per processor socket. If
  794. unknown, this value is zero.
  795. ProcessorCharacteristics - Stores processor characteristics flags.
  796. ProcessorFamily2 - Stores additional family information.
  797. --*/
  798. typedef struct _SMBIOS_PROCESSOR_INFORMATION {
  799. SMBIOS_HEADER Header;
  800. UCHAR SocketDesignation;
  801. UCHAR ProcessorType;
  802. UCHAR ProcessorFamily;
  803. UCHAR ProcessorManufacturer;
  804. ULONGLONG ProcessorId;
  805. UCHAR ProcessorVersion;
  806. UCHAR Voltage;
  807. USHORT ExternalClock;
  808. USHORT MaxSpeed;
  809. USHORT CurrentSpeed;
  810. UCHAR Status;
  811. UCHAR ProcessorUpgrade;
  812. USHORT L1CacheHandle;
  813. USHORT L2CacheHandle;
  814. USHORT L3CacheHandle;
  815. UCHAR SerialNumber;
  816. UCHAR AssetTag;
  817. UCHAR PartNumber;
  818. UCHAR CoreCount;
  819. UCHAR ThreadCount;
  820. USHORT ProcessorCharacteristics;
  821. USHORT ProcessorFamily2;
  822. } PACKED SMBIOS_PROCESSOR_INFORMATION, *PSMBIOS_PROCESSOR_INFORMATION;
  823. /*++
  824. Structure Description:
  825. This structure defines SMBIOS cache information.
  826. Members:
  827. Header - Stores the common header. The structure type is 4, processor
  828. information
  829. SocketDesignation - Stores the string index of the cache description
  830. string.
  831. CacheConfiguration - Stores the cache configuration bits. See
  832. SMBIOS_CACHE_* definitions.
  833. MaxCacheSize - Stores the maximum cache size that can be installed. This is
  834. either in units of kilobytes or 64 kilobytes, depending on whether bit
  835. 15 is set.
  836. InstalledSize - Stores the currently installed cache size.
  837. SupportedSramType - Stores the supported SRAM types. See
  838. SMBIOS_CACHE_SRAM_* definitions.
  839. CurrentSramType - Stores the current SRAM type.
  840. CacheSpeed - Stores the cache module speed, in nanoseconds. The value 0
  841. indicates the speed is unknown.
  842. ErrorCorrectionType - Stores the error correction type. See
  843. SMBIOS_CACHE_ERROR_CORRECTION_* definitions.
  844. SystemCacheType - Stores the system cache type. See SMBIOS_CACHE_TYPE_*
  845. definitions.
  846. Associativity - Stores the associativity of the cache. See
  847. SMBIOS_CACHE_ASSOCIATIVITY_* definitions.
  848. --*/
  849. typedef struct _SMBIOS_CACHE_INFORMATION {
  850. SMBIOS_HEADER Header;
  851. UCHAR SocketDesignation;
  852. USHORT CacheConfiguration;
  853. USHORT MaxCacheSize;
  854. USHORT InstalledSize;
  855. USHORT SupportedSramType;
  856. USHORT CurrentSramType;
  857. UCHAR CacheSpeed;
  858. UCHAR ErrorCorrectionType;
  859. UCHAR SystemCacheType;
  860. UCHAR Associativity;
  861. } PACKED SMBIOS_CACHE_INFORMATION, *PSMBIOS_CACHE_INFORMATION;
  862. /*++
  863. Structure Description:
  864. This structure defines the SMBIOS port connector structure, which describes
  865. each port on the system.
  866. Members:
  867. Header - Stores the common header. The structure type is 8, port connector.
  868. InternalReferenceDesignator - Stores the string index of the designator
  869. for the connector inside the enclosure.
  870. InternalConnectorType - Stores the internal connector type.
  871. ExternalReferenceDesignator - Stores the string index of the designator
  872. for the connector outside the enclosure.
  873. ExternalConnectorType - Stores the external connector type.
  874. PortType - Stores the function of the port.
  875. --*/
  876. typedef struct _SMBIOS_PORT_CONNECTOR {
  877. SMBIOS_HEADER Header;
  878. UCHAR InternalReferenceDesignator;
  879. UCHAR InternalConnectorType;
  880. UCHAR ExternalReferenceDesignator;
  881. UCHAR ExternalConnectorType;
  882. UCHAR PortType;
  883. } PACKED SMBIOS_PORT_CONNECTOR, *PSMBIOS_PORT_CONNECTOR;
  884. /*++
  885. Structure Description:
  886. This structure defines the SMBIOS slot structure, which describes a
  887. slot in the system.
  888. Members:
  889. Header - Stores the common header. The structure type is 8, port connector.
  890. SlotDesignation - Stores the string index for the slot designation string.
  891. SlotType - Stores teh slot type. See SMBIOS_SLOT_TYPE_* definitions.
  892. SlotDataBusWidth - Stores the slot data bus width.
  893. CurrentUsage - Stores the slot's current usage state.
  894. SlotLength - Stores the length of the slot.
  895. SlotId - Stores the slot identifier.
  896. SlotCharacteristics1 - Stores the first byte of characteristics. See
  897. SMBIOS_SLOT_CHARACTERISTIC1_* definitions.
  898. SlotCharacteristics2 - Stores the first byte of characteristics. See
  899. SMBIOS_SLOT_CHARACTERISTIC2_* definitions.
  900. SegmentGroupNumber - Stores the bus segment number this slot resides on.
  901. BusNumber - Stores the bus number this slot resides on.
  902. DeviceAndFunctionNumber - Stores the slot device number in bits 7:3 and
  903. the function number in bits 2:0.
  904. --*/
  905. typedef struct _SMBIOS_SLOT {
  906. SMBIOS_HEADER Header;
  907. UCHAR SlotDesignation;
  908. UCHAR SlotType;
  909. UCHAR SlotDataBusWidth;
  910. UCHAR CurrentUsage;
  911. UCHAR SlotLength;
  912. USHORT SlotId;
  913. UCHAR SlotCharacteristics1;
  914. UCHAR SlotCharacteristics2;
  915. USHORT SegmentGroupNumber;
  916. UCHAR BusNumber;
  917. UCHAR DeviceAndFunctionNumber;
  918. } PACKED SMBIOS_SLOT, *PSMBIOS_SLOT;
  919. /*++
  920. Structure Description:
  921. This structure defines the SMBIOS OEM strings structure, which contains
  922. custom OEM strings.
  923. Members:
  924. Header - Stores the common header. The structure type is 11, OEM strings.
  925. Count - Stores the number of OEM strings.
  926. --*/
  927. typedef struct _SMBIOS_OEM_STRINGS {
  928. SMBIOS_HEADER Header;
  929. UCHAR Count;
  930. } PACKED SMBIOS_OEM_STRINGS, *PSMBIOS_OEM_STRINGS;
  931. /*++
  932. Structure Description:
  933. This structure defines the SMBIOS physical memory array, which describes
  934. a collection of memory devices that operate together to form a memory
  935. address space.
  936. Members:
  937. Header - Stores the common header. The structure type is 16, physical
  938. memory array.
  939. Location - Stores the location of the memory array, whether on the system
  940. board on an add-in board.
  941. Use - Stores the function for which the array is used.
  942. MemoryErrorCorrection - Stores the primary hardware error correction or
  943. detection mechanism supported by this memory array.
  944. MaximumCapacity - Stores the maximum memory capacity, in kilobytes, for
  945. this array. If this value is 0x80000000 (2 TB), then the extended
  946. memory capacity is used instead.
  947. MemoryErrorInformationHandle - Stores the handle number associated with any
  948. error that was previously detected for the array. Set to 0xFFFE if the
  949. system does not provide error detection, or set to 0xFFFF if no error
  950. was detected.
  951. NumberOfMemoryDevices - Stores the count of memory devices in the array.
  952. ExtendedMemoryCapacity - Stores the maximum capacity in bytes for this
  953. array. This field is only valid when the memory capacity field is
  954. 0x80000000.
  955. --*/
  956. typedef struct _SMBIOS_PHYSICAL_MEMORY_ARRAY {
  957. SMBIOS_HEADER Header;
  958. UCHAR Location;
  959. UCHAR Use;
  960. UCHAR MemoryErrorCorrection;
  961. ULONG MaximumCapacity;
  962. USHORT MemoryErrorInformationHandle;
  963. USHORT NumberOfMemoryDevices;
  964. ULONGLONG ExtendedMemoryCapacity;
  965. } PACKED SMBIOS_PHYSICAL_MEMORY_ARRAY, *PSMBIOS_PHYSICAL_MEMORY_ARRAY;
  966. /*++
  967. Structure Description:
  968. This structure defines an SMBIOS memory device.
  969. Members:
  970. Header - Stores the common header. The structure type is 17, physical
  971. memory device.
  972. PhysicalMemoryArrayHandle - Stores the handle associated with the array
  973. to which this device belongs.
  974. MemoryErrorInformationHandle - Stores the handle of the error event that
  975. occurred. Set to 0xFFFE if error reporting is not supported, or 0xFFFF
  976. if there is no error.
  977. TotalWidth - Stores the total width in bits of this memory device,
  978. including any check or error correction bits. Set to 0xFFFF if unknown.
  979. DataWidth - Stores the width of data in bits. Set to 0xFFFF if unknown.
  980. This may be zero if the device is used only for error correction.
  981. Size - Stores the size of the memory device. If the value is 0, no device
  982. is installed. Set to 0xFFFF if the size is unknown. Set to 0x7FFF if
  983. the size is actually stored in the extended size field.
  984. FormFactor - Stores the form factor of this memory device.
  985. DeviceSet - Stores the set number if the device belongs to a set of memory
  986. devices that must all be populated with the same type of memory. Set to
  987. 0 if the device is not part of a set, or 0xFF if the attribute is
  988. unknown.
  989. DeviceLocator - Stores the string index of the string that identifies the
  990. physically labeled socket or board position where the device is.
  991. BankLocator - Stores the string index of the string that identifies the
  992. physically labeled bank where the memory is located.
  993. MemoryType - Stores the memory type.
  994. TypeDetail - Stores additional details about the memory type.
  995. Speed - Stores the maximum capable speed of the device, in MHz. Set to
  996. 0 if unknown. Note that in this case MHz = (1000 / n) nanoseconds.
  997. Manufacturer - Stores the string index of the memory manufacturer.
  998. SerialNumber - Stores the string index of the serial number.
  999. AssetTag - Stores the string index of the asset tag.
  1000. PartNumber - Stores the string index of the part number.
  1001. Attributes - Stores memory attributes. Bits 3:0 store the rank number, or
  1002. 0 for unknown rank.
  1003. ExtendedSize - Stores the extended size of the memory device, in megabytes.
  1004. This is only valid if it is too big to fit in the size field.
  1005. ConfiguredMemoryClockSpeed - Stores the configured clock speed to the
  1006. memory device, in MHz. Set to 0 if unknown.
  1007. MinimumVoltage - Stores the minimum operating voltage in millivolts.
  1008. MaximumVoltage - Stores the maximum operating voltage in millivolts.
  1009. ConfiguredVoltage - Stores the configured operating voltage in millivolts.
  1010. --*/
  1011. typedef struct _SMBIOS_MEMORY_DEVICE {
  1012. SMBIOS_HEADER Header;
  1013. USHORT PhysicalMemoryArrayHandle;
  1014. USHORT MemoryErrorInformationHandle;
  1015. USHORT TotalWidth;
  1016. USHORT DataWidth;
  1017. USHORT Size;
  1018. UCHAR FormFactor;
  1019. UCHAR DeviceSet;
  1020. UCHAR DeviceLocator;
  1021. UCHAR BankLocator;
  1022. UCHAR MemoryType;
  1023. USHORT TypeDetail;
  1024. USHORT Speed;
  1025. UCHAR Manufacturer;
  1026. UCHAR SerialNumber;
  1027. UCHAR AssetTag;
  1028. UCHAR PartNumber;
  1029. UCHAR Attributes;
  1030. ULONG ExtendedSize;
  1031. USHORT ConfiguredMemoryClockSpeed;
  1032. USHORT MinimumVoltage;
  1033. USHORT MaximumVoltage;
  1034. USHORT ConfiguredVoltage;
  1035. } PACKED SMBIOS_MEMORY_DEVICE, *PSMBIOS_MEMORY_DEVICE;
  1036. /*++
  1037. Structure Description:
  1038. This structure defines an SMBIOS memory array mapped address.
  1039. Members:
  1040. Header - Stores the common header. The structure type is 19, memory array
  1041. mapped address.
  1042. StartingAddress - Stores the physical address in kilobytes of a range of
  1043. area mapped to the specified memory array. Use the extended starting
  1044. address if this field is 0xFFFFFFFF.
  1045. EndingAddress - Stores the physical ending address of the last kilobyte
  1046. of the range mapped to the specified memory array. Use the extended
  1047. end address is this field is 0xFFFFFFFF.
  1048. MemoryArrayHandle - Stores the handle of the memory array associated with
  1049. this mapping.
  1050. PartitionWidth - Stores the number of memory devices that form a single
  1051. row of memory for the address partition defined by this structure.
  1052. ExtendedStartingAddress - Stores the physical address in bytes of the
  1053. start of the range. This is only valid if the starting address is
  1054. 0xFFFFFFFF.
  1055. ExtendedEndingAddress - Stores teh physical ending addres in bytes of the
  1056. last byte of the range. This is only valid if the starting address is
  1057. 0xFFFFFFFF.
  1058. --*/
  1059. typedef struct _SMBIOS_MEMORY_ARRAY_MAPPED_ADDRESS {
  1060. SMBIOS_HEADER Header;
  1061. ULONG StartingAddress;
  1062. ULONG EndingAddress;
  1063. USHORT MemoryArrayHandle;
  1064. UCHAR PartitionWidth;
  1065. ULONGLONG ExtendedStartingAddress;
  1066. ULONGLONG ExtendedEndingAddress;
  1067. } PACKED SMBIOS_MEMORY_ARRAY_MAPPED_ADDRESS,
  1068. *PSMBIOS_MEMORY_ARRAY_MAPPED_ADDRESS;
  1069. /*++
  1070. Structure Description:
  1071. This structure defines an SMBIOS memory array mapped address.
  1072. Members:
  1073. Header - Stores the common header. The structure type is 20, memory device
  1074. mapped address.
  1075. StartingAddress - Stores the physical address in kilobytes of a range of
  1076. area mapped to the specified memory array. Use the extended starting
  1077. address if this field is 0xFFFFFFFF.
  1078. EndingAddress - Stores the physical ending address of the last kilobyte
  1079. of the range mapped to the specified memory array. Use the extended
  1080. end address is this field is 0xFFFFFFFF.
  1081. MemoryDeviceHandle - Stores the handle of the memory device this mapping
  1082. describes.
  1083. MemoryArrayMappedAddressHandle - Stores the handle of the memory array
  1084. mapped address associated with this mapping.
  1085. PartitionRowPosition - Stores the position of the referenced memory device
  1086. in a row of the address partition. For example, if two 8-bit devices
  1087. form a 16-bit row, the field's value is either 1 or 2. If unknown, set
  1088. to 0xFF.
  1089. InterleavePosition - Stores the position of the referenced memory device
  1090. in an interleave. 0 indicates non-interleaved, 1 indicates first
  1091. interleave position, 2 indicates second interleave position, and so on.
  1092. Set to 0xFF if unknown.
  1093. InterleavedDataDepth - Stores the maximum number of consecutive rows from
  1094. the referenced memory device that are accessed in a single interleaved
  1095. transfer. Set to 0 if the device is not part of an interleave, or 0xFF
  1096. if the value is unknown.
  1097. ExtendedStartingAddress - Stores the physical address in bytes of the
  1098. start of the range. This is only valid if the starting address is
  1099. 0xFFFFFFFF.
  1100. ExtendedEndingAddress - Stores teh physical ending addres in bytes of the
  1101. last byte of the range. This is only valid if the starting address is
  1102. 0xFFFFFFFF.
  1103. --*/
  1104. typedef struct _SMBIOS_MEMORY_DEVICE_MAPPED_ADDRESS {
  1105. SMBIOS_HEADER Header;
  1106. ULONG StartingAddress;
  1107. ULONG EndingAddress;
  1108. USHORT MemoryDeviceHandle;
  1109. USHORT MemoryArrayMappedAddressHandle;
  1110. UCHAR PartitionRowPosition;
  1111. UCHAR InterleavePosition;
  1112. UCHAR InterleavedDataDepth;
  1113. ULONGLONG ExtendedStartingAddress;
  1114. ULONGLONG ExtendedEndingAddress;
  1115. } PACKED SMBIOS_MEMORY_DEVICE_MAPPED_ADDRESS,
  1116. *PSMBIOS_MEMORY_DEVICE_MAPPED_ADDRESS;
  1117. /*++
  1118. Structure Description:
  1119. This structure defines an SMBIOS boot information.
  1120. Members:
  1121. Header - Stores the common header. The structure type is 32, boot
  1122. information.
  1123. Reserved - Stores six reserved bytes that are currently all set to zero.
  1124. BootStatus - Stores the boot status data.
  1125. --*/
  1126. typedef struct _SMBIOS_BOOT_INFORMATION {
  1127. SMBIOS_HEADER Header;
  1128. UCHAR Reserved[6];
  1129. UCHAR BootStatus[ANYSIZE_ARRAY];
  1130. } PACKED SMBIOS_BOOT_INFORMATION, *PSMBIOS_BOOT_INFORMATION;
  1131. //
  1132. // -------------------------------------------------------------------- Globals
  1133. //
  1134. //
  1135. // -------------------------------------------------------- Function Prototypes
  1136. //