Home | History | Annotate | Download | only in SmbiosView
      1 /** @file
      2   Build a table, each item is (Key, Info) pair.
      3   And give a interface of query a string out of a table.
      4 
      5   Copyright (c) 2005 - 2015, Intel Corporation. All rights reserved.<BR>
      6   This program and the accompanying materials
      7   are licensed and made available under the terms and conditions of the BSD License
      8   which accompanies this distribution.  The full text of the license may be found at
      9   http://opensource.org/licenses/bsd-license.php
     10 
     11   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 
     14 **/
     15 
     16 #include "../UefiShellDebug1CommandsLib.h"
     17 #include "QueryTable.h"
     18 #include "PrintInfo.h"
     19 
     20 TABLE_ITEM  SystemWakeupTypeTable[] = {
     21   {
     22     0x0,
     23     L" Reserved"
     24   },
     25   {
     26     0x1,
     27     L" Other"
     28   },
     29   {
     30     0x2,
     31     L" Unknown"
     32   },
     33   {
     34     0x3,
     35     L" APM Timer"
     36   },
     37   {
     38     0x4,
     39     L" Modem Ring"
     40   },
     41   {
     42     0x5,
     43     L" LAN Remote"
     44   },
     45   {
     46     0x6,
     47     L" Power Switch"
     48   },
     49   {
     50     0x7,
     51     L" AC Power Restored"
     52   }
     53 };
     54 
     55 TABLE_ITEM  BaseBoardFeatureFlagsTable[] = {
     56   {
     57     0,
     58     L" Hosting board"
     59   },
     60   {
     61     1,
     62     L" Requires at least one daughter board or auxiliary card"
     63   },
     64   {
     65     2,
     66     L" Removable"
     67   },
     68   {
     69     3,
     70     L" Replaceable"
     71   },
     72   {
     73     4,
     74     L" Hot swappable"
     75   }
     76 };
     77 
     78 TABLE_ITEM  BaseBoardBoardTypeTable[] = {
     79   {
     80     0x01,
     81     L" Unknown"
     82   },
     83   {
     84     0x02,
     85     L" Other"
     86   },
     87   {
     88     0x03,
     89     L" Server Blade"
     90   },
     91   {
     92     0x04,
     93     L" Connectivity Switch"
     94   },
     95   {
     96     0x05,
     97     L" System Management Module"
     98   },
     99   {
    100     0x06,
    101     L" Processor Module"
    102   },
    103   {
    104     0x07,
    105     L" I/O Module"
    106   },
    107   {
    108     0x08,
    109     L" Memory Module"
    110   },
    111   {
    112     0x09,
    113     L" Daughter board"
    114   },
    115   {
    116     0x0A,
    117     L" Motherboard"
    118   },
    119   {
    120     0x0B,
    121     L" Processor/Memory Module"
    122   },
    123   {
    124     0x0C,
    125     L" Processor/IO Module"
    126   },
    127   {
    128     0x0D,
    129     L" Interconnect Board"
    130   }
    131 };
    132 
    133 TABLE_ITEM  SystemEnclosureTypeTable[] = {
    134   {
    135     0x01,
    136     L"  Other"
    137   },
    138   {
    139     0x02,
    140     L"  Unknown"
    141   },
    142   {
    143     0x03,
    144     L"  Desktop"
    145   },
    146   {
    147     0x04,
    148     L"  Low Profile Desktop"
    149   },
    150   {
    151     0x05,
    152     L"  Pizza Box"
    153   },
    154   {
    155     0x06,
    156     L"  Mini Tower"
    157   },
    158   {
    159     0x07,
    160     L"  Tower"
    161   },
    162   {
    163     0x08,
    164     L"  Portable"
    165   },
    166   {
    167     0x09,
    168     L"  LapTop"
    169   },
    170   {
    171     0x0A,
    172     L"  Notebook"
    173   },
    174   {
    175     0x0B,
    176     L"  Hand Held"
    177   },
    178   {
    179     0x0C,
    180     L"  Docking Station"
    181   },
    182   {
    183     0x0D,
    184     L"  All in One"
    185   },
    186   {
    187     0x0E,
    188     L"  Sub Notebook"
    189   },
    190   {
    191     0x0F,
    192     L"  Space-saving"
    193   },
    194   {
    195     0x10,
    196     L"  Main Server Chassis"
    197   },
    198   {
    199     0x11,
    200     L"  Expansion Chassis"
    201   },
    202   {
    203     0x12,
    204     L"  SubChassis"
    205   },
    206   {
    207     0x13,
    208     L"  Sub Notebook"
    209   },
    210   {
    211     0x14,
    212     L"  Bus Expansion Chassis"
    213   },
    214   {
    215     0x15,
    216     L"  Peripheral Chassis"
    217   },
    218   {
    219     0x16,
    220     L"  RAID Chassis"
    221   },
    222   {
    223     0x17,
    224     L"  Rack Mount Chassis"
    225   },
    226   {
    227     0x18,
    228     L"  Sealed-case PC"
    229   },
    230   {
    231     0x19,
    232     L"  Multi-system Chassis"
    233   },
    234   {
    235     0x1A,
    236     L"  CompactPCI"
    237   },
    238   {
    239     0x1B,
    240     L"  AdvancedTCA"
    241   },
    242   {
    243     0x1C,
    244     L"  Blade"
    245   },
    246   {
    247     0x1D,
    248     L"  Blade Enclosure"
    249   },
    250 };
    251 
    252 TABLE_ITEM  SystemEnclosureStatusTable[] = {
    253   {
    254     0x1,
    255     L" Other"
    256   },
    257   {
    258     0x2,
    259     L" Unknown"
    260   },
    261   {
    262     0x3,
    263     L" Safe"
    264   },
    265   {
    266     0x4,
    267     L" Warning"
    268   },
    269   {
    270     0x5,
    271     L" Critical"
    272   },
    273   {
    274     0x6,
    275     L" Non-recoverable"
    276   }
    277 };
    278 
    279 TABLE_ITEM  SESecurityStatusTable[] = {
    280   {
    281     0x1,
    282     L" Other"
    283   },
    284   {
    285     0x2,
    286     L" Unknown"
    287   },
    288   {
    289     0x3,
    290     L" None"
    291   },
    292   {
    293     0x4,
    294     L" External interface locked out"
    295   },
    296   {
    297     0x5,
    298     L" External interface enabled"
    299   }
    300 };
    301 
    302 TABLE_ITEM  ProcessorTypeTable[] = {
    303   {
    304     0x1,
    305     L" Other"
    306   },
    307   {
    308     0x2,
    309     L" Unknown"
    310   },
    311   {
    312     0x3,
    313     L" Central Processor"
    314   },
    315   {
    316     0x4,
    317     L" Math Processor"
    318   },
    319   {
    320     0x5,
    321     L" DSP Processor"
    322   },
    323   {
    324     0x6,
    325     L" Video Processor "
    326   },
    327 };
    328 
    329 TABLE_ITEM  ProcessorUpgradeTable[] = {
    330   {
    331     0x01,
    332     L"Other"
    333   },
    334   {
    335     0x02,
    336     L"Unknown"
    337   },
    338   {
    339     0x03,
    340     L"Daughter Board"
    341   },
    342   {
    343     0x04,
    344     L"ZIF Socket"
    345   },
    346   {
    347     0x05,
    348     L"Replaceable Piggy Back"
    349   },
    350   {
    351     0x06,
    352     L"None"
    353   },
    354   {
    355     0x07,
    356     L"LIF Socket"
    357   },
    358   {
    359     0x08,
    360     L"Slot 1"
    361   },
    362   {
    363     0x09,
    364     L"Slot 2"
    365   },
    366   {
    367     0x0A,
    368     L"370-pin socket"
    369   },
    370   {
    371     0x0B,
    372     L"Slot A"
    373   },
    374   {
    375     0x0C,
    376     L"Slot M"
    377   },
    378   {
    379     0x0D,
    380     L"Socket 423"
    381   },
    382   {
    383     0x0E,
    384     L"Socket A"
    385   },
    386   {
    387     0x0F,
    388     L"Socket 478"
    389   },
    390   {
    391     0x10,
    392     L"Socket 754"
    393   },
    394   {
    395     0x11,
    396     L"Socket 940"
    397   },
    398   {
    399     0x12,
    400     L"Socket 939"
    401   },
    402   {
    403     0x13,
    404     L"Socket mPGA604"
    405   },
    406   {
    407     0x14,
    408     L"Socket LGA771"
    409   },
    410   {
    411     0x15,
    412     L"Socket LGA775"
    413   },
    414   {
    415     0x16,
    416     L"Socket S1"
    417   },
    418   {
    419     0x17,
    420     L"Socket AM2"
    421   },
    422   {
    423     0x18,
    424     L"Socket F"
    425   },
    426   {
    427     0x19,
    428     L"Socket LGA1366"
    429   },
    430   {
    431     0x1A,
    432     L"Socket G34"
    433   },
    434   {
    435     0x1B,
    436     L"Socket AM3"
    437   },
    438   {
    439     0x1C,
    440     L"Socket C32"
    441   },
    442   {
    443     0x1D,
    444     L"Socket LGA1156"
    445   },
    446   {
    447     0x1E,
    448     L"Socket LGA1567"
    449   },
    450   {
    451     0x1F,
    452     L"Socket PGA988A"
    453   },
    454   {
    455     0x20,
    456     L"Socket BGA1288"
    457   },
    458   {
    459     0x21,
    460     L"Socket rPGA988B"
    461   },
    462   {
    463     0x22,
    464     L"Socket BGA1023"
    465   },
    466   {
    467     0x23,
    468     L"Socket BGA1224"
    469   },
    470   {
    471     0x24,
    472     L"Socket LGA1155"
    473   },
    474   {
    475     0x25,
    476     L"Socket LGA1356"
    477   },
    478   {
    479     0x26,
    480     L"Socket LGA2011"
    481   },
    482   {
    483     0x27,
    484     L"Socket FS1"
    485   },
    486   {
    487     0x28,
    488     L"Socket FS2"
    489   },
    490   {
    491     0x29,
    492     L"Socket FM1"
    493   },
    494   {
    495     0x2A,
    496     L"Socket FM2"
    497   },
    498   {
    499     0x2B,
    500     L"Socket LGA2011-3"
    501   },
    502   {
    503     0x2C,
    504     L"Socket LGA1356-3"
    505   }
    506 };
    507 
    508 TABLE_ITEM  ProcessorCharacteristicsTable[] = {
    509   {
    510     1,
    511     L" Unknown"
    512   },
    513   {
    514     2,
    515     L" 64-bit Capable"
    516   },
    517   {
    518     3,
    519     L" Multi-Core"
    520   },
    521   {
    522     4,
    523     L" Hardware Thread"
    524   },
    525   {
    526     5,
    527     L" Execute Protection"
    528   },
    529   {
    530     6,
    531     L" Enhanced Virtualization"
    532   },
    533   {
    534     7,
    535     L" Power/Performance Control"
    536   }
    537 };
    538 
    539 
    540 TABLE_ITEM  McErrorDetectMethodTable[] = {
    541   {
    542     0x01,
    543     L"Other"
    544   },
    545   {
    546     0x02,
    547     L"Unknown"
    548   },
    549   {
    550     0x03,
    551     L"None"
    552   },
    553   {
    554     0x04,
    555     L"8-bit Parity"
    556   },
    557   {
    558     0x05,
    559     L"32-bit ECC"
    560   },
    561   {
    562     0x06,
    563     L"64-bit ECC"
    564   },
    565   {
    566     0x07,
    567     L"128-bit ECC"
    568   },
    569   {
    570     0x08,
    571     L"CRC"
    572   },
    573 };
    574 
    575 TABLE_ITEM  McErrorCorrectCapabilityTable[] = {
    576   {
    577     0,
    578     L"Other"
    579   },
    580   {
    581     1,
    582     L"Unknown"
    583   },
    584   {
    585     2,
    586     L"None"
    587   },
    588   {
    589     3,
    590     L"Single Bit Error Correcting"
    591   },
    592   {
    593     4,
    594     L"Double Bit Error Correcting"
    595   },
    596   {
    597     5,
    598     L"Error Scrubbing"
    599   },
    600 };
    601 
    602 TABLE_ITEM  McInterleaveSupportTable[] = {
    603   {
    604     0x01,
    605     L"Other"
    606   },
    607   {
    608     0x02,
    609     L"Unknown"
    610   },
    611   {
    612     0x03,
    613     L"One Way Interleave"
    614   },
    615   {
    616     0x04,
    617     L"Two Way Interleave"
    618   },
    619   {
    620     0x05,
    621     L"Four Way Interleave"
    622   },
    623   {
    624     0x06,
    625     L"Eight Way Interleave"
    626   },
    627   {
    628     0x07,
    629     L"Sixteen Way Interleave"
    630   }
    631 };
    632 
    633 TABLE_ITEM  McMemorySpeedsTable[] = {
    634   {
    635     0,
    636     L" Other"
    637   },
    638   {
    639     1,
    640     L" Unknown"
    641   },
    642   {
    643     2,
    644     L" 70ns"
    645   },
    646   {
    647     3,
    648     L" 60ns"
    649   },
    650   {
    651     4,
    652     L" 50ns"
    653   },
    654 };
    655 
    656 TABLE_ITEM  MemoryModuleVoltageTable[] = {
    657   {
    658     0,
    659     L" 5V"
    660   },
    661   {
    662     1,
    663     L" 3.3V"
    664   },
    665   {
    666     2,
    667     L" 2.9V"
    668   },
    669 };
    670 
    671 TABLE_ITEM  MmMemoryTypeTable[] = {
    672   {
    673     0,
    674     L" Other"
    675   },
    676   {
    677     1,
    678     L" Unknown"
    679   },
    680   {
    681     2,
    682     L" Standard"
    683   },
    684   {
    685     3,
    686     L" Fast Page Mode"
    687   },
    688   {
    689     4,
    690     L" EDO"
    691   },
    692   {
    693     5,
    694     L" Parity"
    695   },
    696   {
    697     6,
    698     L" ECC "
    699   },
    700   {
    701     7,
    702     L" SIMM"
    703   },
    704   {
    705     8,
    706     L" DIMM"
    707   },
    708   {
    709     9,
    710     L" Burst EDO"
    711   },
    712   {
    713     10,
    714     L" SDRAM"
    715   }
    716 };
    717 
    718 TABLE_ITEM  MmErrorStatusTable[] = {
    719   {
    720     0,
    721     L" Uncorrectable errors received"
    722   },
    723   {
    724     1,
    725     L" Correctable errors received"
    726   },
    727   {
    728     2,
    729     L" Error Status obtained from the event log"
    730   }
    731 };
    732 
    733 TABLE_ITEM  CacheSRAMTypeTable[] = {
    734   {
    735     0,
    736     L" Other"
    737   },
    738   {
    739     1,
    740     L" Unknown"
    741   },
    742   {
    743     2,
    744     L" Non-Burst"
    745   },
    746   {
    747     3,
    748     L" Burst"
    749   },
    750   {
    751     4,
    752     L" Pipeline Burst"
    753   },
    754   {
    755     5,
    756     L" Synchronous"
    757   },
    758   {
    759     6,
    760     L" Asynchronous"
    761   },
    762 };
    763 
    764 TABLE_ITEM  CacheErrCorrectingTypeTable[] = {
    765   {
    766     0x01,
    767     L"Other"
    768   },
    769   {
    770     0x02,
    771     L"Unknown"
    772   },
    773   {
    774     0x03,
    775     L"None"
    776   },
    777   {
    778     0x04,
    779     L"Parity"
    780   },
    781   {
    782     0x05,
    783     L"Single-bit ECC"
    784   },
    785   {
    786     0x06,
    787     L"Multi-bit ECC"
    788   }
    789 };
    790 
    791 TABLE_ITEM  CacheSystemCacheTypeTable[] = {
    792   {
    793     0x01,
    794     L"Other"
    795   },
    796   {
    797     0x02,
    798     L"Unknown"
    799   },
    800   {
    801     0x03,
    802     L"Instruction"
    803   },
    804   {
    805     0x04,
    806     L"Data"
    807   },
    808   {
    809     0x05,
    810     L"Unified"
    811   }
    812 };
    813 
    814 TABLE_ITEM  CacheAssociativityTable[] = {
    815   {
    816     0x01,
    817     L"Other"
    818   },
    819   {
    820     0x02,
    821     L"Unknown"
    822   },
    823   {
    824     0x03,
    825     L"Direct Mapped"
    826   },
    827   {
    828     0x04,
    829     L"2-way Set-Associative"
    830   },
    831   {
    832     0x05,
    833     L"4-way Set-Associative"
    834   },
    835   {
    836     0x06,
    837     L"Fully Associative"
    838   },
    839   {
    840     0x07,
    841     L"8-way Set-Associative"
    842   },
    843   {
    844     0x08,
    845     L"16-way Set-Associative"
    846   },
    847   {
    848     0x09,
    849     L"12-way Set-Associative"
    850   },
    851   {
    852     0x0A,
    853     L"24-way Set-Associative"
    854   },
    855   {
    856     0x0B,
    857     L"32-way Set-Associative"
    858   },
    859   {
    860     0x0C,
    861     L"48-way Set-Associative"
    862   },
    863   {
    864     0x0D,
    865     L"64-way Set-Associative"
    866   },
    867   {
    868     0x0E,
    869     L"20-way Set-Associative"
    870   }
    871 };
    872 
    873 TABLE_ITEM  PortConnectorTypeTable[] = {
    874   {
    875     0x00,
    876     L"None"
    877   },
    878   {
    879     0x01,
    880     L"Centronics"
    881   },
    882   {
    883     0x02,
    884     L"Mini Centronics"
    885   },
    886   {
    887     0x03,
    888     L"Proprietary"
    889   },
    890   {
    891     0x04,
    892     L"DB-25 pin male"
    893   },
    894   {
    895     0x05,
    896     L"DB-25 pin female"
    897   },
    898   {
    899     0x06,
    900     L"DB-15 pin male"
    901   },
    902   {
    903     0x07,
    904     L"DB-15 pin female"
    905   },
    906   {
    907     0x08,
    908     L"DB-9 pin male"
    909   },
    910   {
    911     0x09,
    912     L"DB-9 pin female"
    913   },
    914   {
    915     0x0A,
    916     L"RJ-11"
    917   },
    918   {
    919     0x0B,
    920     L"RJ-45"
    921   },
    922   {
    923     0x0C,
    924     L"50 Pin MiniSCSI"
    925   },
    926   {
    927     0x0D,
    928     L"Mini-DIN"
    929   },
    930   {
    931     0x0E,
    932     L"Micro-DIN"
    933   },
    934   {
    935     0x0F,
    936     L"PS/2"
    937   },
    938   {
    939     0x10,
    940     L"Infrared"
    941   },
    942   {
    943     0x11,
    944     L"HP-HIL"
    945   },
    946   {
    947     0x12,
    948     L"Access Bus (USB)"
    949   },
    950   {
    951     0x13,
    952     L"SSA SCSI"
    953   },
    954   {
    955     0x14,
    956     L"Circular DIN-8 male"
    957   },
    958   {
    959     0x15,
    960     L"Circular DIN-8 female"
    961   },
    962   {
    963     0x16,
    964     L"On Board IDE"
    965   },
    966   {
    967     0x17,
    968     L"On Board Floppy"
    969   },
    970   {
    971     0x18,
    972     L"9 Pin Dual Inline (pin 10 cut)"
    973   },
    974   {
    975     0x19,
    976     L"25 Pin Dual Inline (pin 26 cut)"
    977   },
    978   {
    979     0x1A,
    980     L"50 Pin Dual Inline"
    981   },
    982   {
    983     0x1B,
    984     L"68 Pin Dual Inline"
    985   },
    986   {
    987     0x1C,
    988     L"On Board Sound Input from CD-ROM"
    989   },
    990   {
    991     0x1D,
    992     L"Mini-Centronics Type-14"
    993   },
    994   {
    995     0x1E,
    996     L"Mini-Centronics Type-26"
    997   },
    998   {
    999     0x1F,
   1000     L"Mini-jack (headphones)"
   1001   },
   1002   {
   1003     0x20,
   1004     L"BNC"
   1005   },
   1006   {
   1007     0x21,
   1008     L"1394"
   1009   },
   1010   {
   1011     0x22,
   1012     L"SAS/SATA Plug Receptacle"
   1013   },
   1014   {
   1015     0xA0,
   1016     L"PC-98"
   1017   },
   1018   {
   1019     0xA1,
   1020     L"PC-98Hireso"
   1021   },
   1022   {
   1023     0xA2,
   1024     L"PC-H98"
   1025   },
   1026   {
   1027     0xA3,
   1028     L"PC-98Note"
   1029   },
   1030   {
   1031     0xA4,
   1032     L"PC-98Full"
   1033   },
   1034   {
   1035     0xFF,
   1036     L"Other"
   1037   },
   1038 };
   1039 
   1040 TABLE_ITEM  PortTypeTable[] = {
   1041   {
   1042     0x00,
   1043     L"None"
   1044   },
   1045   {
   1046     0x01,
   1047     L"Parallel Port XT/AT Compatible"
   1048   },
   1049   {
   1050     0x02,
   1051     L"Parallel Port PS/2"
   1052   },
   1053   {
   1054     0x03,
   1055     L"Parallel Port ECP"
   1056   },
   1057   {
   1058     0x04,
   1059     L"Parallel Port EPP"
   1060   },
   1061   {
   1062     0x05,
   1063     L"Parallel Port ECP/EPP"
   1064   },
   1065   {
   1066     0x06,
   1067     L"Serial Port XT/AT Compatible"
   1068   },
   1069   {
   1070     0x07,
   1071     L"Serial Port 16450 Compatible"
   1072   },
   1073   {
   1074     0x08,
   1075     L"Serial Port 16550 Compatible"
   1076   },
   1077   {
   1078     0x09,
   1079     L"Serial Port 16550A Compatible"
   1080   },
   1081   {
   1082     0x0A,
   1083     L"SCSI Port"
   1084   },
   1085   {
   1086     0x0B,
   1087     L"MIDI Port"
   1088   },
   1089   {
   1090     0x0C,
   1091     L"Joy Stick Port"
   1092   },
   1093   {
   1094     0x0D,
   1095     L"Keyboard Port"
   1096   },
   1097   {
   1098     0x0E,
   1099     L"Mouse Port"
   1100   },
   1101   {
   1102     0x0F,
   1103     L"SSA SCSI"
   1104   },
   1105   {
   1106     0x10,
   1107     L"USB"
   1108   },
   1109   {
   1110     0x11,
   1111     L"FireWire (IEEE P1394)"
   1112   },
   1113   {
   1114     0x12,
   1115     L"PCMCIA Type II"
   1116   },
   1117   {
   1118     0x13,
   1119     L"PCMCIA Type II"
   1120   },
   1121   {
   1122     0x14,
   1123     L"PCMCIA Type III"
   1124   },
   1125   {
   1126     0x15,
   1127     L"Cardbus"
   1128   },
   1129   {
   1130     0x16,
   1131     L"Access Bus Port"
   1132   },
   1133   {
   1134     0x17,
   1135     L"SCSI II"
   1136   },
   1137   {
   1138     0x18,
   1139     L"SCSI Wide"
   1140   },
   1141   {
   1142     0x19,
   1143     L"PC-98"
   1144   },
   1145   {
   1146     0x1A,
   1147     L"PC-98-Hireso"
   1148   },
   1149   {
   1150     0x1B,
   1151     L"PC-H98"
   1152   },
   1153   {
   1154     0x1C,
   1155     L"Video Port"
   1156   },
   1157   {
   1158     0x1D,
   1159     L"Audio Port"
   1160   },
   1161   {
   1162     0x1E,
   1163     L"Modem Port"
   1164   },
   1165   {
   1166     0x1F,
   1167     L"Network Port"
   1168   },
   1169   {
   1170     0x20,
   1171     L"SATA Port"
   1172   },
   1173   {
   1174     0x21,
   1175     L"SAS Port"
   1176   },
   1177   {
   1178     0xA0,
   1179     L"8251 Compatible"
   1180   },
   1181   {
   1182     0xA1,
   1183     L"8251 FIFO Compatible"
   1184   },
   1185   {
   1186     0xFF,
   1187     L"Other "
   1188   },
   1189 };
   1190 
   1191 TABLE_ITEM  SystemSlotTypeTable[] = {
   1192   {
   1193     0x01,
   1194     L"Other"
   1195   },
   1196   {
   1197     0x02,
   1198     L"Unknown"
   1199   },
   1200   {
   1201     0x03,
   1202     L"ISA"
   1203   },
   1204   {
   1205     0x04,
   1206     L"MCA"
   1207   },
   1208   {
   1209     0x05,
   1210     L"EISA"
   1211   },
   1212   {
   1213     0x06,
   1214     L"PCI"
   1215   },
   1216   {
   1217     0x07,
   1218     L"PC Card (PCMCIA)"
   1219   },
   1220   {
   1221     0x08,
   1222     L"VL-VESA"
   1223   },
   1224   {
   1225     0x09,
   1226     L"Proprietary"
   1227   },
   1228   {
   1229     0x0A,
   1230     L"Processor Card Slot"
   1231   },
   1232   {
   1233     0x0B,
   1234     L"Proprietary Memory Card Slot"
   1235   },
   1236   {
   1237     0x0C,
   1238     L"I/O Riser Card Slot"
   1239   },
   1240   {
   1241     0x0D,
   1242     L"NuBus"
   1243   },
   1244   {
   1245     0x0E,
   1246     L"PCI - 66MHz Capable"
   1247   },
   1248   {
   1249     0x0F,
   1250     L"AGP"
   1251   },
   1252   {
   1253     0x10,
   1254     L"AGP 2X"
   1255   },
   1256   {
   1257     0x11,
   1258     L"AGP 4X"
   1259   },
   1260   {
   1261     0x12,
   1262     L"PCI-X"
   1263   },
   1264   {
   1265     0xA0,
   1266     L"PC-98/C20 "
   1267   },
   1268   {
   1269     0xA1,
   1270     L"PC-98/C24 "
   1271   },
   1272   {
   1273     0xA2,
   1274     L"PC-98/E "
   1275   },
   1276   {
   1277     0xA3,
   1278     L"PC-98/Local Bus "
   1279   },
   1280   {
   1281     0xA4,
   1282     L"PC-98/Card "
   1283   },
   1284   {
   1285     0xA5,
   1286     L"PCI Express "
   1287   },
   1288   {
   1289     0xA6,
   1290     L"PCI Express X1"
   1291   },
   1292   {
   1293     0xA7,
   1294     L"PCI Express X2"
   1295   },
   1296   {
   1297     0xA8,
   1298     L"PCI Express X4"
   1299   },
   1300   {
   1301     0xA9,
   1302     L"PCI Express X8"
   1303   },
   1304   {
   1305     0xAA,
   1306     L"PCI Express X16"
   1307   },
   1308   {
   1309     0xAB,
   1310     L"PCI Express Gen 2"
   1311   },
   1312   {
   1313     0xAC,
   1314     L"PCI Express Gen 2 X1"
   1315   },
   1316   {
   1317     0xAD,
   1318     L"PCI Express Gen 2 X2"
   1319   },
   1320   {
   1321     0xAE,
   1322     L"PCI Express Gen 2 X4"
   1323   },
   1324   {
   1325     0xAF,
   1326     L"PCI Express Gen 2 X8"
   1327   },
   1328   {
   1329     0xB0,
   1330     L"PCI Express Gen 2 X16"
   1331   },
   1332   {
   1333     0xB1,
   1334     L"PCI Express Gen 3"
   1335   },
   1336   {
   1337     0xB2,
   1338     L"PCI Express Gen 3 X1"
   1339   },
   1340   {
   1341     0xB3,
   1342     L"PCI Express Gen 3 X2"
   1343   },
   1344   {
   1345     0xB4,
   1346     L"PCI Express Gen 3 X4"
   1347   },
   1348   {
   1349     0xB5,
   1350     L"PCI Express Gen 3 X8"
   1351   },
   1352   {
   1353     0xB6,
   1354     L"PCI Express Gen 3 X16"
   1355   }
   1356 };
   1357 
   1358 TABLE_ITEM  SystemSlotDataBusWidthTable[] = {
   1359   {
   1360     0x01,
   1361     L" Other"
   1362   },
   1363   {
   1364     0x02,
   1365     L" Unknown"
   1366   },
   1367   {
   1368     0x03,
   1369     L" 8 bit"
   1370   },
   1371   {
   1372     0x04,
   1373     L" 16 bit"
   1374   },
   1375   {
   1376     0x05,
   1377     L" 32 bit"
   1378   },
   1379   {
   1380     0x06,
   1381     L" 64 bit"
   1382   },
   1383   {
   1384     0x07,
   1385     L" 128 bit"
   1386   },
   1387   {
   1388     0x08,
   1389     L" 1x or x1"
   1390   },
   1391   {
   1392     0x09,
   1393     L" 2x or x2"
   1394   },
   1395   {
   1396     0x0A,
   1397     L" 4x or x4"
   1398   },
   1399   {
   1400     0x0B,
   1401     L" 8x or x8"
   1402   },
   1403   {
   1404     0x0C,
   1405     L" 12x or x12"
   1406   },
   1407   {
   1408     0x0D,
   1409     L" 16x or x16"
   1410   },
   1411   {
   1412     0x0E,
   1413     L" 32x or x32"
   1414   }
   1415 };
   1416 
   1417 TABLE_ITEM  SystemSlotCurrentUsageTable[] = {
   1418   {
   1419     0x01,
   1420     L" Other"
   1421   },
   1422   {
   1423     0x02,
   1424     L" Unknown"
   1425   },
   1426   {
   1427     0x03,
   1428     L" Available"
   1429   },
   1430   {
   1431     0x04,
   1432     L" In use"
   1433   },
   1434 };
   1435 
   1436 TABLE_ITEM  SystemSlotLengthTable[] = {
   1437   {
   1438     0x01,
   1439     L" Other"
   1440   },
   1441   {
   1442     0x02,
   1443     L" Unknown"
   1444   },
   1445   {
   1446     0x03,
   1447     L" Short length"
   1448   },
   1449   {
   1450     0x04,
   1451     L" Long Length"
   1452   },
   1453 };
   1454 
   1455 TABLE_ITEM  SlotCharacteristics1Table[] = {
   1456   {
   1457     0,
   1458     L" Characteristics Unknown"
   1459   },
   1460   {
   1461     1,
   1462     L" Provides 5.0 Volts"
   1463   },
   1464   {
   1465     2,
   1466     L" Provides 3.3 Volts"
   1467   },
   1468   {
   1469     3,
   1470     L" Slot's opening is shared with another slot, e.g. PCI/EISA shared slot."
   1471   },
   1472 
   1473   {
   1474     4,
   1475     L" PC Card slot supports PC Card-16"
   1476   },
   1477   {
   1478     5,
   1479     L" PC Card slot supports CardBus"
   1480   },
   1481   {
   1482     6,
   1483     L" PC Card slot supports Zoom Video "
   1484   },
   1485   {
   1486     7,
   1487     L" PC Card slot supports Modem Ring Resume "
   1488   }
   1489 };
   1490 
   1491 TABLE_ITEM  SlotCharacteristics2Table[] = {
   1492   {
   1493     0,
   1494     L" PCI slot supports Power Management Enable (PME#) signal"
   1495   },
   1496   {
   1497     1,
   1498     L" Slot supports hot-plug devices"
   1499   },
   1500   {
   1501     2,
   1502     L" PCI slot supports SMBus signal"
   1503   }
   1504 };
   1505 
   1506 TABLE_ITEM  OnboardDeviceTypesTable[] = {
   1507   {
   1508     0x01,
   1509     L"  Other"
   1510   },
   1511   {
   1512     0x02,
   1513     L"  Unknown"
   1514   },
   1515   {
   1516     0x03,
   1517     L"  Video"
   1518   },
   1519   {
   1520     0x04,
   1521     L"  SCSI Controller"
   1522   },
   1523   {
   1524     0x05,
   1525     L"  Ethernet"
   1526   },
   1527   {
   1528     0x06,
   1529     L"  Token Ring"
   1530   },
   1531   {
   1532     0x07,
   1533     L"  Sound"
   1534   },
   1535   {
   1536     0x08,
   1537     L"  Pata Controller"
   1538   },
   1539   {
   1540     0x09,
   1541     L"  Sata Controller"
   1542   },
   1543   {
   1544     0x0A,
   1545     L"  Sas Controller"
   1546   },
   1547 };
   1548 
   1549 TABLE_ITEM  SELTypesTable[] = {
   1550   {
   1551     0x00,
   1552     L" Reserved."
   1553   },
   1554   {
   1555     0x01,
   1556     L" Single-bit ECC memory error"
   1557   },
   1558   {
   1559     0x02,
   1560     L" Multi-bit ECC memory error"
   1561   },
   1562   {
   1563     0x03,
   1564     L" Parity memory error"
   1565   },
   1566   {
   1567     0x04,
   1568     L" Bus time-out"
   1569   },
   1570   {
   1571     0x05,
   1572     L" I/O Channel Check"
   1573   },
   1574   {
   1575     0x06,
   1576     L" Software NMI"
   1577   },
   1578   {
   1579     0x07,
   1580     L" POST Memory Resize"
   1581   },
   1582   {
   1583     0x08,
   1584     L" POST Error"
   1585   },
   1586   {
   1587     0x09,
   1588     L" PCI Parity Error"
   1589   },
   1590   {
   1591     0x0A,
   1592     L" PCI System Error"
   1593   },
   1594   {
   1595     0x0B,
   1596     L" CPU Failure"
   1597   },
   1598   {
   1599     0x0C,
   1600     L" EISA FailSafe Timer time-out"
   1601   },
   1602   {
   1603     0x0D,
   1604     L" Correctable memory log disabled"
   1605   },
   1606   {
   1607     0x0E,
   1608     L" Logging disabled for a specific Event Type"
   1609   },
   1610   {
   1611     0x0F,
   1612     L" Reserved"
   1613   },
   1614   {
   1615     0x10,
   1616     L" System Limit Exceeded"
   1617   },
   1618   {
   1619     0x11,
   1620     L" Asynchronous hardware timer expired and issued a system reset"
   1621   },
   1622   {
   1623     0x12,
   1624     L" System configuration information"
   1625   },
   1626   {
   1627     0x13,
   1628     L" Hard-disk information"
   1629   },
   1630   {
   1631     0x14,
   1632     L" System reconfigured"
   1633   },
   1634   {
   1635     0x15,
   1636     L" Uncorrectable CPU-complex error"
   1637   },
   1638   {
   1639     0x16,
   1640     L" Log Area Reset/Cleared"
   1641   },
   1642   {
   1643     0x17,
   1644     L" System boot"
   1645   },
   1646   {
   1647     0x7F18,
   1648     L" Unused by SMBIOS specification"
   1649   },
   1650   {
   1651     0xFE80,
   1652     L" System and OEM specified"
   1653   },
   1654   {
   1655     0xFF,
   1656     L" End-of-log"
   1657   },
   1658 };
   1659 
   1660 TABLE_ITEM  SELVarDataFormatTypeTable[] = {
   1661   {
   1662     0x00,
   1663     L" None "
   1664   },
   1665   {
   1666     0x01,
   1667     L" Handle "
   1668   },
   1669   {
   1670     0x02,
   1671     L" Multiple-Event "
   1672   },
   1673   {
   1674     0x03,
   1675     L" Multiple-Event Handle "
   1676   },
   1677   {
   1678     0x04,
   1679     L" POST Results Bitmap "
   1680   },
   1681   //
   1682   // Defined below
   1683   //
   1684   {
   1685     0x05,
   1686     L" System Management Type"
   1687   },
   1688   //
   1689   // Defined below
   1690   //
   1691   {
   1692     0x06,
   1693     L" Multiple-Event System Management Type "
   1694   },
   1695   {
   1696     0x7F07,
   1697     L" Unused "
   1698   },
   1699   {
   1700     0xFF80,
   1701     L" OEM assigned "
   1702   },
   1703 };
   1704 
   1705 TABLE_ITEM  PostResultsBitmapDw1Table[] = {
   1706   {
   1707     0,
   1708     L" Channel 2 Timer error "
   1709   },
   1710   {
   1711     1,
   1712     L" Master PIC (8259 #1) error "
   1713   },
   1714   {
   1715     2,
   1716     L" Slave PIC (8259 #2) error "
   1717   },
   1718   {
   1719     3,
   1720     L" CMOS Battery Failure "
   1721   },
   1722   {
   1723     4,
   1724     L" CMOS System Options Not Set "
   1725   },
   1726   {
   1727     5,
   1728     L" CMOS Checksum Error "
   1729   },
   1730   {
   1731     6,
   1732     L" CMOS Configuration Error "
   1733   },
   1734   {
   1735     7,
   1736     L" Mouse and Keyboard Swapped "
   1737   },
   1738   {
   1739     8,
   1740     L" Keyboard Locked "
   1741   },
   1742   {
   1743     9,
   1744     L" Keyboard Not Functional "
   1745   },
   1746   {
   1747     10,
   1748     L" Keyboard Controller Not Functional "
   1749   },
   1750   {
   1751     11,
   1752     L" CMOS Memory Size Different "
   1753   },
   1754   {
   1755     12,
   1756     L" Memory Decreased in Size "
   1757   },
   1758   {
   1759     13,
   1760     L" Cache Memory Error "
   1761   },
   1762   {
   1763     14,
   1764     L" Floppy Drive 0 Error "
   1765   },
   1766   {
   1767     15,
   1768     L" Floppy Drive 1 Error "
   1769   },
   1770   {
   1771     16,
   1772     L" Floppy Controller Failure "
   1773   },
   1774   {
   1775     17,
   1776     L" Number of ATA Drives Reduced Error "
   1777   },
   1778   {
   1779     18,
   1780     L" CMOS Time Not Set "
   1781   },
   1782   {
   1783     19,
   1784     L" DDC Monitor Configuration Change "
   1785   },
   1786   {
   1787     20,
   1788     L" Reserved, set to 0 "
   1789   },
   1790   {
   1791     21,
   1792     L" Reserved, set to 0 "
   1793   },
   1794   {
   1795     22,
   1796     L" Reserved, set to 0 "
   1797   },
   1798   {
   1799     23,
   1800     L" Reserved, set to 0 "
   1801   },
   1802   {
   1803     24,
   1804     L" Second DWORD has valid data "
   1805   },
   1806   {
   1807     25,
   1808     L" Reserved, set to 0 "
   1809   },
   1810   {
   1811     26,
   1812     L" Reserved, set to 0 "
   1813   },
   1814   {
   1815     27,
   1816     L" Reserved, set to 0 "
   1817   },
   1818   {
   1819     28,
   1820     L" Normally 0; available for OEM assignment "
   1821   },
   1822   {
   1823     29,
   1824     L" Normally 0; available for OEM assignment "
   1825   },
   1826   {
   1827     30,
   1828     L" Normally 0; available for OEM assignment "
   1829   },
   1830   {
   1831     31,
   1832     L" Normally 0; available for OEM assignment "
   1833   },
   1834 };
   1835 
   1836 TABLE_ITEM  PostResultsBitmapDw2Table[] = {
   1837   {
   1838     0,
   1839     L" Normally 0; available for OEM assignment "
   1840   },
   1841   {
   1842     1,
   1843     L" Normally 0; available for OEM assignment "
   1844   },
   1845   {
   1846     2,
   1847     L" Normally 0; available for OEM assignment "
   1848   },
   1849   {
   1850     3,
   1851     L" Normally 0; available for OEM assignment "
   1852   },
   1853   {
   1854     4,
   1855     L" Normally 0; available for OEM assignment "
   1856   },
   1857   {
   1858     5,
   1859     L" Normally 0; available for OEM assignment "
   1860   },
   1861   {
   1862     6,
   1863     L" Normally 0; available for OEM assignment "
   1864   },
   1865   {
   1866     7,
   1867     L" PCI Memory Conflict "
   1868   },
   1869   {
   1870     8,
   1871     L" PCI I/O Conflict "
   1872   },
   1873   {
   1874     9,
   1875     L" PCI IRQ Conflict "
   1876   },
   1877   {
   1878     10,
   1879     L" PNP Memory Conflict "
   1880   },
   1881   {
   1882     11,
   1883     L" PNP 32 bit Memory Conflict "
   1884   },
   1885   {
   1886     12,
   1887     L" PNP I/O Conflict "
   1888   },
   1889   {
   1890     13,
   1891     L" PNP IRQ Conflict "
   1892   },
   1893   {
   1894     14,
   1895     L" PNP DMA Conflict "
   1896   },
   1897   {
   1898     15,
   1899     L" Bad PNP Serial ID Checksum "
   1900   },
   1901   {
   1902     16,
   1903     L" Bad PNP Resource Data Checksum "
   1904   },
   1905   {
   1906     17,
   1907     L" Static Resource Conflict "
   1908   },
   1909   {
   1910     18,
   1911     L" NVRAM Checksum Error, NVRAM Cleared "
   1912   },
   1913   {
   1914     19,
   1915     L" System Board Device Resource Conflict "
   1916   },
   1917   {
   1918     20,
   1919     L" Primary Output Device Not Found "
   1920   },
   1921   {
   1922     21,
   1923     L" Primary Input Device Not Found "
   1924   },
   1925   {
   1926     22,
   1927     L" Primary Boot Device Not Found "
   1928   },
   1929   {
   1930     23,
   1931     L" NVRAM Cleared By Jumper "
   1932   },
   1933   {
   1934     24,
   1935     L" NVRAM Data Invalid, NVRAM Cleared "
   1936   },
   1937   {
   1938     25,
   1939     L" FDC Resource Conflict "
   1940   },
   1941   {
   1942     26,
   1943     L" Primary ATA Controller Resource Conflict "
   1944   },
   1945   {
   1946     27,
   1947     L" Secondary ATA Controller Resource Conflict "
   1948   },
   1949   {
   1950     28,
   1951     L" Parallel Port Resource Conflict "
   1952   },
   1953   {
   1954     29,
   1955     L" Serial Port 1 Resource Conflict "
   1956   },
   1957   {
   1958     30,
   1959     L" Serial Port 2 Resource Conflict "
   1960   },
   1961   {
   1962     31,
   1963     L" Audio Resource Conflict "
   1964   },
   1965 };
   1966 
   1967 TABLE_ITEM  SELSysManagementTypesTable[] = {
   1968   {
   1969     0x01,
   1970     L" +2.5V Out of range, #2 "
   1971   },
   1972   {
   1973     0x02,
   1974     L" +3.3V Out of range "
   1975   },
   1976   {
   1977     0x03,
   1978     L" +5V Out of range "
   1979   },
   1980   {
   1981     0x04,
   1982     L" -5V Out of range "
   1983   },
   1984   {
   1985     0x05,
   1986     L" +12V Out of range "
   1987   },
   1988   {
   1989     0x06,
   1990     L" -12V Out of range "
   1991   },
   1992   {
   1993     0x0F07,
   1994     L" Reserved for future out-of-range voltage levels "
   1995   },
   1996   {
   1997     0x10,
   1998     L" System board temperature out of range "
   1999   },
   2000   {
   2001     0x11,
   2002     L" Processor #1 temperature out of range "
   2003   },
   2004   {
   2005     0x12,
   2006     L" Processor #2 temperature out of range "
   2007   },
   2008   {
   2009     0x13,
   2010     L" Processor #3 temperature out of range "
   2011   },
   2012   {
   2013     0x14,
   2014     L" Processor #4 temperature out of range "
   2015   },
   2016   {
   2017     0x1F15,
   2018     L" Reserved for future out-of-range temperatures"
   2019   },
   2020   {
   2021     0x2720,
   2022     L" Fan n (n = 0 to 7) Out of range "
   2023   },
   2024   {
   2025     0x2F28,
   2026     L" Reserved for future assignment via this specification "
   2027   },
   2028   {
   2029     0x30,
   2030     L" Chassis secure switch activated "
   2031   },
   2032 };
   2033 
   2034 TABLE_ITEM  PMALocationTable[] = {
   2035   {
   2036     0x01,
   2037     L"  Other"
   2038   },
   2039   {
   2040     0x02,
   2041     L"  Unknown"
   2042   },
   2043   {
   2044     0x03,
   2045     L"  System board or motherboard"
   2046   },
   2047   {
   2048     0x04,
   2049     L"  ISA add-on card"
   2050   },
   2051   {
   2052     0x05,
   2053     L"  EISA add-on card"
   2054   },
   2055   {
   2056     0x06,
   2057     L"  PCI add-on card"
   2058   },
   2059   {
   2060     0x07,
   2061     L"  MCA add-on card"
   2062   },
   2063   {
   2064     0x08,
   2065     L"  PCMCIA add-on card"
   2066   },
   2067   {
   2068     0x09,
   2069     L"  Proprietary add-on card"
   2070   },
   2071   {
   2072     0x0A,
   2073     L"  NuBus"
   2074   },
   2075   {
   2076     0xA0,
   2077     L"  PC-98/C20 add-on card"
   2078   },
   2079   {
   2080     0xA1,
   2081     L"  PC-98/C24 add-on card"
   2082   },
   2083   {
   2084     0xA2,
   2085     L"  PC-98/E add-on card"
   2086   },
   2087   {
   2088     0xA3,
   2089     L"  PC-98/Local bus add-on card"
   2090   }
   2091 };
   2092 
   2093 TABLE_ITEM  PMAUseTable[] = {
   2094   {
   2095     0x01,
   2096     L" Other"
   2097   },
   2098   {
   2099     0x02,
   2100     L" Unknown"
   2101   },
   2102   {
   2103     0x03,
   2104     L" System memory"
   2105   },
   2106   {
   2107     0x04,
   2108     L" Video memory"
   2109   },
   2110   {
   2111     0x05,
   2112     L" Flash memory"
   2113   },
   2114   {
   2115     0x06,
   2116     L" Non-volatile RAM"
   2117   },
   2118   {
   2119     0x07,
   2120     L" Cache memory"
   2121   }
   2122 };
   2123 
   2124 TABLE_ITEM  PMAErrorCorrectionTypesTable[] = {
   2125   {
   2126     0x01,
   2127     L"  Other"
   2128   },
   2129   {
   2130     0x02,
   2131     L"  Unknown"
   2132   },
   2133   {
   2134     0x03,
   2135     L"  None"
   2136   },
   2137   {
   2138     0x04,
   2139     L"  Parity"
   2140   },
   2141   {
   2142     0x05,
   2143     L"  Single-bit ECC"
   2144   },
   2145   {
   2146     0x06,
   2147     L"  Multi-bit ECC"
   2148   },
   2149   {
   2150     0x07,
   2151     L"  CRC"
   2152   }
   2153 };
   2154 
   2155 TABLE_ITEM  MemoryDeviceFormFactorTable[] = {
   2156   {
   2157     0x01,
   2158     L"  Other"
   2159   },
   2160   {
   2161     0x02,
   2162     L"  Unknown"
   2163   },
   2164   {
   2165     0x03,
   2166     L"  SIMM"
   2167   },
   2168   {
   2169     0x04,
   2170     L"  SIP"
   2171   },
   2172   {
   2173     0x05,
   2174     L"  Chip"
   2175   },
   2176   {
   2177     0x06,
   2178     L"  DIP"
   2179   },
   2180   {
   2181     0x07,
   2182     L"  ZIP"
   2183   },
   2184   {
   2185     0x08,
   2186     L"  Proprietary Card"
   2187   },
   2188   {
   2189     0x09,
   2190     L"  DIMM"
   2191   },
   2192   {
   2193     0x0A,
   2194     L"  TSOP"
   2195   },
   2196   {
   2197     0x0B,
   2198     L"  Row of chips"
   2199   },
   2200   {
   2201     0x0C,
   2202     L"  RIMM"
   2203   },
   2204   {
   2205     0x0D,
   2206     L"  SODIMM"
   2207   },
   2208   {
   2209     0x0E,
   2210     L"  SRIMM"
   2211   },
   2212   {
   2213     0x0F,
   2214     L"  FB-DIMM"
   2215   }
   2216 };
   2217 
   2218 TABLE_ITEM  MemoryDeviceTypeTable[] = {
   2219   {
   2220     0x01,
   2221     L"  Other"
   2222   },
   2223   {
   2224     0x02,
   2225     L"  Unknown"
   2226   },
   2227   {
   2228     0x03,
   2229     L"  DRAM"
   2230   },
   2231   {
   2232     0x04,
   2233     L"  EDRAM"
   2234   },
   2235   {
   2236     0x05,
   2237     L"  VRAM"
   2238   },
   2239   {
   2240     0x06,
   2241     L"  SRAM"
   2242   },
   2243   {
   2244     0x07,
   2245     L"  RAM"
   2246   },
   2247   {
   2248     0x08,
   2249     L"  ROM"
   2250   },
   2251   {
   2252     0x09,
   2253     L"  FLASH"
   2254   },
   2255   {
   2256     0x0A,
   2257     L"  EEPROM"
   2258   },
   2259   {
   2260     0x0B,
   2261     L"  FEPROM"
   2262   },
   2263   {
   2264     0x0C,
   2265     L"  EPROM"
   2266   },
   2267   {
   2268     0x0D,
   2269     L"  CDRAM"
   2270   },
   2271   {
   2272     0x0E,
   2273     L"  3DRAM"
   2274   },
   2275   {
   2276     0x0F,
   2277     L"  SDRAM"
   2278   },
   2279   {
   2280     0x10,
   2281     L"  SGRAM"
   2282   },
   2283   {
   2284     0x11,
   2285     L"  RDRAM"
   2286   },
   2287   {
   2288     0x12,
   2289     L"  DDR"
   2290   },
   2291   {
   2292     0x13,
   2293     L"  DDR2"
   2294   },
   2295   {
   2296     0x14,
   2297     L"  DDR2 FB-DIMM"
   2298   },
   2299   {
   2300     0x18,
   2301     L"  DDR3"
   2302   },
   2303   {
   2304     0x19,
   2305     L"  FBD2"
   2306   }
   2307 };
   2308 
   2309 TABLE_ITEM  MemoryDeviceTypeDetailTable[] = {
   2310   {
   2311     1,
   2312     L" Other"
   2313   },
   2314   {
   2315     2,
   2316     L" Unknown"
   2317   },
   2318   {
   2319     3,
   2320     L" Fast-paged"
   2321   },
   2322   {
   2323     4,
   2324     L" Static column"
   2325   },
   2326   {
   2327     5,
   2328     L" Pseudo-STATIC"
   2329   },
   2330   {
   2331     6,
   2332     L" RAMBUS "
   2333   },
   2334   {
   2335     7,
   2336     L" Synchronous"
   2337   },
   2338   {
   2339     8,
   2340     L" CMOS"
   2341   },
   2342   {
   2343     9,
   2344     L" EDO"
   2345   },
   2346   {
   2347     10,
   2348     L" Window DRAM"
   2349   },
   2350   {
   2351     11,
   2352     L" Cache DRAM"
   2353   },
   2354   {
   2355     12,
   2356     L" Non-volatile"
   2357   },
   2358   {
   2359     13,
   2360     L" Registered(Buffered)"
   2361   },
   2362   {
   2363     14,
   2364     L" Unbuffered(Unregistered)"
   2365   }
   2366 };
   2367 
   2368 TABLE_ITEM  MemoryErrorTypeTable[] = {
   2369   {
   2370     0x01,
   2371     L"  Other"
   2372   },
   2373   {
   2374     0x02,
   2375     L"  Unknown"
   2376   },
   2377   {
   2378     0x03,
   2379     L"  OK"
   2380   },
   2381   {
   2382     0x04,
   2383     L"  Bad read"
   2384   },
   2385   {
   2386     0x05,
   2387     L"  Parity error"
   2388   },
   2389   {
   2390     0x06,
   2391     L"  Single-bit error"
   2392   },
   2393   {
   2394     0x07,
   2395     L"  Double-bit error"
   2396   },
   2397   {
   2398     0x08,
   2399     L"  Multi-bit error"
   2400   },
   2401   {
   2402     0x09,
   2403     L"  Nibble error"
   2404   },
   2405   {
   2406     0x0A,
   2407     L"  Checksum error"
   2408   },
   2409   {
   2410     0x0B,
   2411     L"  CRC error"
   2412   },
   2413   {
   2414     0x0C,
   2415     L"  Corrected single-bit error"
   2416   },
   2417   {
   2418     0x0D,
   2419     L"  Corrected error"
   2420   },
   2421   {
   2422     0x0E,
   2423     L"  Uncorrectable error"
   2424   },
   2425 };
   2426 
   2427 TABLE_ITEM  MemoryErrorGranularityTable[] = {
   2428   {
   2429     0x01,
   2430     L"  Other"
   2431   },
   2432   {
   2433     0x02,
   2434     L"  Unknown"
   2435   },
   2436   {
   2437     0x03,
   2438     L"  Device level"
   2439   },
   2440   {
   2441     0x04,
   2442     L"  Memory partition level"
   2443   },
   2444 };
   2445 
   2446 TABLE_ITEM  MemoryErrorOperationTable[] = {
   2447   {
   2448     0x01,
   2449     L"  Other"
   2450   },
   2451   {
   2452     0x02,
   2453     L"  Unknown"
   2454   },
   2455   {
   2456     0x03,
   2457     L"  Read"
   2458   },
   2459   {
   2460     0x04,
   2461     L"  Write"
   2462   },
   2463   {
   2464     0x05,
   2465     L"  Partial Write"
   2466   },
   2467 };
   2468 
   2469 TABLE_ITEM  PointingDeviceTypeTable[] = {
   2470   {
   2471     0x01,
   2472     L"  Other"
   2473   },
   2474   {
   2475     0x02,
   2476     L"  Unknown"
   2477   },
   2478   {
   2479     0x03,
   2480     L"  Mouse"
   2481   },
   2482   {
   2483     0x04,
   2484     L"  Track Ball"
   2485   },
   2486   {
   2487     0x05,
   2488     L"  Track Point"
   2489   },
   2490   {
   2491     0x06,
   2492     L"  Glide Point"
   2493   },
   2494   {
   2495     0x07,
   2496     L"  Touch Pad"
   2497   },
   2498 };
   2499 
   2500 TABLE_ITEM  PointingDeviceInterfaceTable[] = {
   2501   {
   2502     0x01,
   2503     L" Other"
   2504   },
   2505   {
   2506     0x02,
   2507     L" Unknown"
   2508   },
   2509   {
   2510     0x03,
   2511     L" Serial"
   2512   },
   2513   {
   2514     0x04,
   2515     L" PS/2"
   2516   },
   2517   {
   2518     0x05,
   2519     L" Infrared"
   2520   },
   2521   {
   2522     0x06,
   2523     L" HP-HIL"
   2524   },
   2525   {
   2526     0x07,
   2527     L" Bus mouse"
   2528   },
   2529   {
   2530     0x08,
   2531     L" ADB(Apple Desktop Bus"
   2532   },
   2533   {
   2534     0xA0,
   2535     L" Bus mouse DB-9"
   2536   },
   2537   {
   2538     0xA1,
   2539     L" Bus mouse mirco-DIN"
   2540   },
   2541   {
   2542     0xA2,
   2543     L" USB"
   2544   },
   2545 };
   2546 
   2547 TABLE_ITEM  PBDeviceChemistryTable[] = {
   2548   {
   2549     0x01,
   2550     L" Other "
   2551   },
   2552   {
   2553     0x02,
   2554     L" Unknown "
   2555   },
   2556   {
   2557     0x03,
   2558     L" Lead Acid "
   2559   },
   2560   {
   2561     0x04,
   2562     L" Nickel Cadmium "
   2563   },
   2564   {
   2565     0x05,
   2566     L" Nickel metal hydride "
   2567   },
   2568   {
   2569     0x06,
   2570     L" Lithium-ion "
   2571   },
   2572   {
   2573     0x07,
   2574     L" Zinc air "
   2575   },
   2576   {
   2577     0x08,
   2578     L" Lithium Polymer "
   2579   },
   2580 };
   2581 
   2582 TABLE_ITEM  VPLocationTable[] = {
   2583   {
   2584     0x01,
   2585     L" Other "
   2586   },
   2587   {
   2588     0x02,
   2589     L" Unknown "
   2590   },
   2591   {
   2592     0x03,
   2593     L" OK "
   2594   },
   2595   {
   2596     0x04,
   2597     L" Non-critical "
   2598   },
   2599   {
   2600     0x05,
   2601     L" Critical "
   2602   },
   2603   {
   2604     0x06,
   2605     L" Non-recoverable "
   2606   },
   2607 };
   2608 
   2609 TABLE_ITEM  VPStatusTable[] = {
   2610   {
   2611     0x01,
   2612     L" Other "
   2613   },
   2614   {
   2615     0x02,
   2616     L" Unknown "
   2617   },
   2618   {
   2619     0x03,
   2620     L" Processor "
   2621   },
   2622   {
   2623     0x04,
   2624     L" Disk "
   2625   },
   2626   {
   2627     0x05,
   2628     L" Peripheral Bay "
   2629   },
   2630   {
   2631     0x06,
   2632     L" System Management Module "
   2633   },
   2634   {
   2635     0x07,
   2636     L" Motherboard "
   2637   },
   2638   {
   2639     0x08,
   2640     L" Memory Module "
   2641   },
   2642   {
   2643     0x09,
   2644     L" Processor Module "
   2645   },
   2646   {
   2647     0x0A,
   2648     L" Power Unit "
   2649   },
   2650   {
   2651     0x0B,
   2652     L" Add-in Card "
   2653   },
   2654 };
   2655 
   2656 TABLE_ITEM  CoolingDeviceStatusTable[] = {
   2657   {
   2658     0x01,
   2659     L" Other "
   2660   },
   2661   {
   2662     0x02,
   2663     L" Unknown "
   2664   },
   2665   {
   2666     0x03,
   2667     L" OK "
   2668   },
   2669   {
   2670     0x04,
   2671     L" Non-critical "
   2672   },
   2673   {
   2674     0x05,
   2675     L" Critical "
   2676   },
   2677   {
   2678     0x06,
   2679     L" Non-recoverable "
   2680   },
   2681 };
   2682 
   2683 TABLE_ITEM  CoolingDeviceTypeTable[] = {
   2684   {
   2685     0x01,
   2686     L" Other "
   2687   },
   2688   {
   2689     0x02,
   2690     L" Unknown "
   2691   },
   2692   {
   2693     0x03,
   2694     L" Fan "
   2695   },
   2696   {
   2697     0x04,
   2698     L" Centrifugal Blower "
   2699   },
   2700   {
   2701     0x05,
   2702     L" Chip Fan "
   2703   },
   2704   {
   2705     0x06,
   2706     L" Cabinet Fan "
   2707   },
   2708   {
   2709     0x07,
   2710     L" Power Supply Fan "
   2711   },
   2712   {
   2713     0x08,
   2714     L" Heat Pipe "
   2715   },
   2716   {
   2717     0x09,
   2718     L" Integrated Refrigeration "
   2719   },
   2720   {
   2721     0x10,
   2722     L" Active Cooling "
   2723   },
   2724   {
   2725     0x11,
   2726     L" Passive Cooling "
   2727   },
   2728 };
   2729 
   2730 TABLE_ITEM  TemperatureProbeStatusTable[] = {
   2731   {
   2732     0x01,
   2733     L" Other "
   2734   },
   2735   {
   2736     0x02,
   2737     L" Unknown "
   2738   },
   2739   {
   2740     0x03,
   2741     L" OK "
   2742   },
   2743   {
   2744     0x04,
   2745     L" Non-critical "
   2746   },
   2747   {
   2748     0x05,
   2749     L" Critical "
   2750   },
   2751   {
   2752     0x06,
   2753     L" Non-recoverable "
   2754   },
   2755 };
   2756 
   2757 TABLE_ITEM  TemperatureProbeLocTable[] = {
   2758   {
   2759     0x01,
   2760     L" Other "
   2761   },
   2762   {
   2763     0x02,
   2764     L" Unknown "
   2765   },
   2766   {
   2767     0x03,
   2768     L" Processor "
   2769   },
   2770   {
   2771     0x04,
   2772     L" Disk "
   2773   },
   2774   {
   2775     0x05,
   2776     L" Peripheral Bay "
   2777   },
   2778   {
   2779     0x06,
   2780     L" System Management Module "
   2781   },
   2782   {
   2783     0x07,
   2784     L" Motherboard "
   2785   },
   2786   {
   2787     0x08,
   2788     L" Memory Module "
   2789   },
   2790   {
   2791     0x09,
   2792     L" Processor Module "
   2793   },
   2794   {
   2795     0x0A,
   2796     L" Power Unit "
   2797   },
   2798   {
   2799     0x0B,
   2800     L" Add-in Card "
   2801   },
   2802 };
   2803 
   2804 TABLE_ITEM  ECPStatusTable[] = {
   2805   {
   2806     0x01,
   2807     L" Other "
   2808   },
   2809   {
   2810     0x02,
   2811     L" Unknown "
   2812   },
   2813   {
   2814     0x03,
   2815     L" OK "
   2816   },
   2817   {
   2818     0x04,
   2819     L" Non-critical "
   2820   },
   2821   {
   2822     0x05,
   2823     L" Critical "
   2824   },
   2825   {
   2826     0x06,
   2827     L" Non-recoverable "
   2828   },
   2829 };
   2830 
   2831 TABLE_ITEM  ECPLocTable[] = {
   2832   {
   2833     0x01,
   2834     L" Other "
   2835   },
   2836   {
   2837     0x02,
   2838     L" Unknown "
   2839   },
   2840   {
   2841     0x03,
   2842     L" Processor "
   2843   },
   2844   {
   2845     0x04,
   2846     L" Disk "
   2847   },
   2848   {
   2849     0x05,
   2850     L" Peripheral Bay "
   2851   },
   2852   {
   2853     0x06,
   2854     L" System Management Module "
   2855   },
   2856   {
   2857     0x07,
   2858     L" Motherboard "
   2859   },
   2860   {
   2861     0x08,
   2862     L" Memory Module "
   2863   },
   2864   {
   2865     0x09,
   2866     L" Processor Module "
   2867   },
   2868   {
   2869     0x0A,
   2870     L" Power Unit "
   2871   },
   2872   {
   2873     0x0B,
   2874     L" Add-in Card "
   2875   },
   2876 };
   2877 
   2878 TABLE_ITEM  MDTypeTable[] = {
   2879   {
   2880     0x01,
   2881     L" Other "
   2882   },
   2883   {
   2884     0x02,
   2885     L" Unknown "
   2886   },
   2887   {
   2888     0x03,
   2889     L" National Semiconductor LM75 "
   2890   },
   2891   {
   2892     0x04,
   2893     L" National Semiconductor LM78 "
   2894   },
   2895   {
   2896     0x05,
   2897     L" National Semiconductor LM79 "
   2898   },
   2899   {
   2900     0x06,
   2901     L" National Semiconductor LM80 "
   2902   },
   2903   {
   2904     0x07,
   2905     L" National Semiconductor LM81 "
   2906   },
   2907   {
   2908     0x08,
   2909     L" Analog Devices ADM9240 "
   2910   },
   2911   {
   2912     0x09,
   2913     L" Dallas Semiconductor DS1780 "
   2914   },
   2915   {
   2916     0x0A,
   2917     L" Maxim 1617 "
   2918   },
   2919   {
   2920     0x0B,
   2921     L" Genesys GL518SM "
   2922   },
   2923   {
   2924     0x0C,
   2925     L" Winbond W83781D "
   2926   },
   2927   {
   2928     0x0D,
   2929     L" Holtek HT82H791 "
   2930   },
   2931 };
   2932 
   2933 TABLE_ITEM  MDAddressTypeTable[] = {
   2934   {
   2935     0x01,
   2936     L" Other "
   2937   },
   2938   {
   2939     0x02,
   2940     L" Unknown "
   2941   },
   2942   {
   2943     0x03,
   2944     L" I/O Port "
   2945   },
   2946   {
   2947     0x04,
   2948     L" Memory "
   2949   },
   2950   {
   2951     0x05,
   2952     L" SM Bus "
   2953   },
   2954 };
   2955 
   2956 TABLE_ITEM  MemoryChannelTypeTable[] = {
   2957   {
   2958     0x01,
   2959     L" Other "
   2960   },
   2961   {
   2962     0x02,
   2963     L" Unknown "
   2964   },
   2965   {
   2966     0x03,
   2967     L" RamBus "
   2968   },
   2969   {
   2970     0x04,
   2971     L" SyncLink "
   2972   },
   2973 };
   2974 
   2975 TABLE_ITEM  IPMIDIBMCInterfaceTypeTable[] = {
   2976   {
   2977     0x00,
   2978     L" Unknown "
   2979   },
   2980   {
   2981     0x01,
   2982     L" KCS: Keyboard Controller Style "
   2983   },
   2984   {
   2985     0x02,
   2986     L" SMIC: Server Management Interface Chip "
   2987   },
   2988   {
   2989     0x03,
   2990     L" BT: Block Transfer "
   2991   },
   2992   {
   2993     0xFF04,
   2994     L" Reserved for future assignment by this specification "
   2995   },
   2996 };
   2997 
   2998 TABLE_ITEM  StructureTypeInfoTable[] = {
   2999   {
   3000     0,
   3001     L" BIOS Information"
   3002   },
   3003   {
   3004     1,
   3005     L" System Information"
   3006   },
   3007   {
   3008     2,
   3009     L" Base Board Information"
   3010   },
   3011   {
   3012     3,
   3013     L" System Enclosure"
   3014   },
   3015   {
   3016     4,
   3017     L" Processor Information"
   3018   },
   3019   {
   3020     5,
   3021     L" Memory Controller Information "
   3022   },
   3023   {
   3024     6,
   3025     L" Memory Module Information "
   3026   },
   3027   {
   3028     7,
   3029     L" Cache Information "
   3030   },
   3031   {
   3032     8,
   3033     L" Port Connector Information "
   3034   },
   3035   {
   3036     9,
   3037     L" System Slots "
   3038   },
   3039   {
   3040     10,
   3041     L" On Board Devices Information  "
   3042   },
   3043   {
   3044     11,
   3045     L" OEM Strings"
   3046   },
   3047   {
   3048     12,
   3049     L" System Configuration Options "
   3050   },
   3051   {
   3052     13,
   3053     L" BIOS Language Information  "
   3054   },
   3055   {
   3056     14,
   3057     L" Group Associations "
   3058   },
   3059   {
   3060     15,
   3061     L" System Event Log "
   3062   },
   3063   {
   3064     16,
   3065     L" Physical Memory Array "
   3066   },
   3067   {
   3068     17,
   3069     L" Memory Device "
   3070   },
   3071   {
   3072     18,
   3073     L" 32-bit Memory Error Information "
   3074   },
   3075   {
   3076     19,
   3077     L" Memory Array Mapped Address "
   3078   },
   3079   {
   3080     20,
   3081     L" Memory Device Mapped Address  "
   3082   },
   3083   {
   3084     21,
   3085     L" Built-in Pointing Device "
   3086   },
   3087   {
   3088     22,
   3089     L" Portable Battery "
   3090   },
   3091   {
   3092     23,
   3093     L" System Reset "
   3094   },
   3095   {
   3096     24,
   3097     L" Hardware Security "
   3098   },
   3099   {
   3100     25,
   3101     L" System Power Controls "
   3102   },
   3103   {
   3104     26,
   3105     L" Voltage Probe "
   3106   },
   3107   {
   3108     27,
   3109     L" Cooling Device "
   3110   },
   3111   {
   3112     28,
   3113     L" Temperature Probe "
   3114   },
   3115   {
   3116     29,
   3117     L" Electrical Current Probe "
   3118   },
   3119   {
   3120     30,
   3121     L" Out-of-Band Remote Access  "
   3122   },
   3123   {
   3124     31,
   3125     L" Boot Integrity Services (BIS) Entry Point"
   3126   },
   3127   {
   3128     32,
   3129     L" System Boot Information "
   3130   },
   3131   {
   3132     33,
   3133     L" 64-bit Memory Error Information "
   3134   },
   3135   {
   3136     34,
   3137     L" Management Device "
   3138   },
   3139   {
   3140     35,
   3141     L" Management Device Component "
   3142   },
   3143   {
   3144     36,
   3145     L" Management Device Threshold Data "
   3146   },
   3147   {
   3148     37,
   3149     L" Memory Channel "
   3150   },
   3151   {
   3152     38,
   3153     L" IPMI Device Information "
   3154   },
   3155   {
   3156     39,
   3157     L" System Power Supply"
   3158   },
   3159   {
   3160     40,
   3161     L" Additional Information"
   3162   },
   3163   {
   3164     41,
   3165     L" Onboard Devices Extended Information"
   3166   },
   3167   {
   3168     42,
   3169     L" Management Controller Host Interface"
   3170   },
   3171   {
   3172     0x7E,
   3173     L" Inactive"
   3174   },
   3175   {
   3176     0x7F,
   3177     L" End-of-Table "
   3178   },
   3179 };
   3180 
   3181 
   3182 /**
   3183   Given a table and a Key, return the responding info.
   3184 
   3185   Notes:
   3186     Table[Index].Key is change from UINT8 to UINT16,
   3187     in order to deal with "0xaa - 0xbb".
   3188 
   3189     For example:
   3190       DisplaySELVariableDataFormatTypes(UINT8 Type, UINT8 Option)
   3191     has a item:
   3192       "0x07-0x7F,   Unused"
   3193     Now define Key = 0x7F07, that is to say: High = 0x7F, Low = 0x07.
   3194     Then all the Key Value between Low and High gets the same string
   3195     L"Unused".
   3196 
   3197   @param[in] Table     The begin address of table.
   3198   @param[in] Number    The number of table items.
   3199   @param[in] Key       The query Key.
   3200   @param[in, out] Info Input as empty buffer; output as data buffer.
   3201   @param[in] InfoLen   The max number of characters for Info.
   3202 
   3203   @return the found Key and Info is valid.
   3204   @retval QUERY_TABLE_UNFOUND and Info should be NULL.
   3205 **/
   3206 UINT8
   3207 QueryTable (
   3208   IN  TABLE_ITEM    *Table,
   3209   IN  UINTN         Number,
   3210   IN  UINT8         Key,
   3211   IN  OUT CHAR16    *Info,
   3212   IN  UINTN         InfoLen
   3213   )
   3214 {
   3215   UINTN Index;
   3216   //
   3217   // High byte and Low byte of word
   3218   //
   3219   UINT8 High;
   3220   UINT8 Low;
   3221 
   3222   for (Index = 0; Index < Number; Index++) {
   3223     High  = (UINT8) (Table[Index].Key >> 8);
   3224     Low   = (UINT8) (Table[Index].Key & 0x00FF);
   3225 
   3226     //
   3227     // Check if Key is in the range
   3228     // or if Key == Value in the table
   3229     //
   3230     if ((High > Low && Key >= Low && Key <= High)
   3231       || (Table[Index].Key == Key)) {
   3232       StrnCpyS (Info, InfoLen, Table[Index].Info, InfoLen - 1);
   3233       StrnCatS (Info, InfoLen, L"\n", InfoLen - 1 - StrLen(Info));
   3234       return Key;
   3235     }
   3236   }
   3237 
   3238   StrCpyS (Info, InfoLen, L"Undefined Value\n");
   3239   return QUERY_TABLE_UNFOUND;
   3240 }
   3241 
   3242 /**
   3243   Given a table of bit info and a Key, return the responding info to the Key.
   3244 
   3245   @param[in] Table     Point to a table which maintains a map of 'bit' to 'message'.
   3246   @param[in] Number    Number of table items.
   3247   @param[in] Bits      The Key of query the bit map information.
   3248 **/
   3249 VOID
   3250 PrintBitsInfo (
   3251   IN  TABLE_ITEM    *Table,
   3252   IN  UINTN         Number,
   3253   IN  UINT32        Bits
   3254   )
   3255 {
   3256   //
   3257   // Get certain bit of 'Value':
   3258   //
   3259 #define BIT(Value, bit) ((Value) & ((UINT32) 1) << (bit))
   3260   //
   3261   // Clear certain bit of 'Value':
   3262   //
   3263 #define CLR_BIT(Value, bit) ((Value) -= (BIT (Value, bit)))
   3264 
   3265   UINTN   Index;
   3266   UINT32  Value;
   3267   BOOLEAN NoInfo;
   3268 
   3269   NoInfo  = TRUE;
   3270   Value   = Bits;
   3271   //
   3272   // query the table and print information
   3273   //
   3274   for (Index = 0; Index < Number; Index++) {
   3275     if (BIT (Value, Table[Index].Key) != 0) {
   3276       Print (Table[Index].Info);
   3277       Print (L" | ");
   3278 
   3279       NoInfo = FALSE;
   3280       //
   3281       // clear the bit, for reserved bits test
   3282       //
   3283       CLR_BIT (Value, Table[Index].Key);
   3284     }
   3285   }
   3286 
   3287   if (NoInfo) {
   3288     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_NO_INFO), gShellDebug1HiiHandle);
   3289   }
   3290 
   3291   if (Value != 0) {
   3292     ShellPrintHiiEx(-1,-1,NULL,
   3293       STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_RSVD_BITS_SET),
   3294       gShellDebug1HiiHandle,
   3295       Value
   3296      );
   3297   }
   3298 
   3299   Print (L"\n");
   3300 }
   3301 //
   3302 // //////////////////////////////////////////////////////////////////
   3303 //
   3304 // Following uses QueryTable functions to simplify the coding.
   3305 // QueryTable(), PrintBitsInfo()
   3306 //
   3307 //
   3308 #define PRINT_TABLE_ITEM(Table, Key) \
   3309   do { \
   3310     UINTN   Num; \
   3311     CHAR16  Info[66]; \
   3312     Num = sizeof (Table) / sizeof (TABLE_ITEM); \
   3313     ZeroMem (Info, sizeof (Info)); \
   3314     QueryTable (Table, Num, Key, Info, sizeof(Info)/sizeof(Info[0])); \
   3315     Print (Info); \
   3316   } while (0);
   3317 
   3318 #define PRINT_BITS_INFO(Table, bits) \
   3319   do { \
   3320     UINTN Num; \
   3321     Num = sizeof (Table) / sizeof (TABLE_ITEM); \
   3322     PrintBitsInfo (Table, Num, (UINT32) bits); \
   3323   } while (0);
   3324 
   3325 /**
   3326   Display System Information (Type 1) Type.
   3327 
   3328   @param[in] Type           The key of the structure.
   3329   @param[in] Option         The optional information.
   3330 **/
   3331 VOID
   3332 DisplaySystemWakeupType (
   3333   IN UINT8 Type,
   3334   IN UINT8 Option
   3335   )
   3336 {
   3337   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_WAKEUP_TYPE), gShellDebug1HiiHandle);
   3338   PRINT_INFO_OPTION (Type, Option);
   3339   PRINT_TABLE_ITEM (SystemWakeupTypeTable, Type);
   3340 }
   3341 
   3342 /**
   3343   Display Base Board (Type 2) Feature Flags.
   3344 
   3345   @param[in] FeatureFlags   The key of the structure.
   3346   @param[in] Option         The optional information.
   3347 **/
   3348 VOID
   3349 DisplayBaseBoardFeatureFlags (
   3350   IN UINT8 FeatureFlags,
   3351   IN UINT8 Option
   3352   )
   3353 {
   3354   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_BASE_BOARD_FEATURE_FLAGS), gShellDebug1HiiHandle);
   3355   PRINT_INFO_OPTION (FeatureFlags, Option);
   3356   PRINT_BITS_INFO (BaseBoardFeatureFlagsTable, FeatureFlags);
   3357 }
   3358 
   3359 /**
   3360   Display Base Board (Type 2) Board Type.
   3361 
   3362   @param[in] Type           The key of the structure.
   3363   @param[in] Option         The optional information.
   3364 **/
   3365 VOID
   3366 DisplayBaseBoardBoardType(
   3367   IN UINT8 Type,
   3368   IN UINT8 Option
   3369   )
   3370 {
   3371   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_BASE_BOARD_BOARD_TYPE), gShellDebug1HiiHandle);
   3372   PRINT_INFO_OPTION (Type, Option);
   3373   PRINT_TABLE_ITEM (BaseBoardBoardTypeTable, Type);
   3374 }
   3375 
   3376 /**
   3377   Display System Enclosure (Type 3) Enclosure Type.
   3378 
   3379   @param[in] Type           The key of the structure.
   3380   @param[in] Option         The optional information.
   3381 **/
   3382 VOID
   3383 DisplaySystemEnclosureType (
   3384   IN UINT8 Type,
   3385   IN UINT8 Option
   3386   )
   3387 {
   3388   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_CHASSIS_TYPE), gShellDebug1HiiHandle);
   3389   PRINT_INFO_OPTION (Type, Option);
   3390   //
   3391   // query table and print info
   3392   //
   3393   PRINT_TABLE_ITEM (SystemEnclosureTypeTable, Type);
   3394 
   3395   if (BIT (Type, 7) != 0) {
   3396     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_CHASSIS_LOCK_PRESENT), gShellDebug1HiiHandle);
   3397   }
   3398 }
   3399 
   3400 /**
   3401   Display System Enclosure (Type 3) Enclosure Status.
   3402 
   3403   @param[in] Status         The key of the structure.
   3404   @param[in] Option         The optional information.
   3405 **/
   3406 VOID
   3407 DisplaySystemEnclosureStatus (
   3408   IN UINT8 Status,
   3409   IN UINT8 Option
   3410   )
   3411 {
   3412   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_CHASSIS_STATUS), gShellDebug1HiiHandle);
   3413   PRINT_INFO_OPTION (Status, Option);
   3414   PRINT_TABLE_ITEM (SystemEnclosureStatusTable, Status);
   3415 }
   3416 
   3417 /**
   3418   Display System Enclosure (Type 3) Security Status.
   3419 
   3420   @param[in] Status         The key of the structure.
   3421   @param[in] Option         The optional information.
   3422 **/
   3423 VOID
   3424 DisplaySESecurityStatus (
   3425   IN UINT8 Status,
   3426   IN UINT8 Option
   3427   )
   3428 {
   3429   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_CHASSIS_SECURITY), gShellDebug1HiiHandle);
   3430   PRINT_INFO_OPTION (Status, Option);
   3431   PRINT_TABLE_ITEM (SESecurityStatusTable, Status);
   3432 }
   3433 
   3434 /**
   3435   Display Processor Information (Type 4) Type.
   3436 
   3437   @param[in] Type           The key of the structure.
   3438   @param[in] Option         The optional information.
   3439 **/
   3440 VOID
   3441 DisplayProcessorType (
   3442   IN UINT8 Type,
   3443   IN UINT8 Option
   3444   )
   3445 {
   3446   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PROC_TYPE), gShellDebug1HiiHandle);
   3447   PRINT_INFO_OPTION (Type, Option);
   3448   PRINT_TABLE_ITEM (ProcessorTypeTable, Type);
   3449 }
   3450 
   3451 /**
   3452   Display Processor Information (Type 4) Upgrade.
   3453 
   3454   @param[in] Upgrade        The key of the structure.
   3455   @param[in] Option         The optional information.
   3456 **/
   3457 VOID
   3458 DisplayProcessorUpgrade (
   3459   IN UINT8 Upgrade,
   3460   IN UINT8 Option
   3461   )
   3462 {
   3463   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PROC_UPDATE), gShellDebug1HiiHandle);
   3464   PRINT_INFO_OPTION (Upgrade, Option);
   3465   PRINT_TABLE_ITEM (ProcessorUpgradeTable, Upgrade);
   3466 }
   3467 
   3468 /**
   3469   Display Processor Information (Type 4) Characteristics.
   3470 
   3471   @param[in] Type           The key of the structure.
   3472   @param[in] Option         The optional information.
   3473 **/
   3474 VOID
   3475 DisplayProcessorCharacteristics (
   3476   IN UINT16 Type,
   3477   IN UINT8 Option
   3478   )
   3479 {
   3480   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PROC_CHARACTERISTICS), gShellDebug1HiiHandle);
   3481   PRINT_INFO_OPTION (Type, Option);
   3482   PRINT_BITS_INFO (ProcessorCharacteristicsTable, Type);
   3483 }
   3484 
   3485 /**
   3486   Display Memory Controller Information (Type 5) method.
   3487 
   3488   @param[in] Method         The key of the structure.
   3489   @param[in] Option         The optional information.
   3490 **/
   3491 VOID
   3492 DisplayMcErrorDetectMethod (
   3493   IN UINT8 Method,
   3494   IN UINT8 Option
   3495   )
   3496 {
   3497   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_DETECTMETHOD), gShellDebug1HiiHandle);
   3498   PRINT_INFO_OPTION (Method, Option);
   3499   PRINT_TABLE_ITEM (McErrorDetectMethodTable, Method);
   3500 }
   3501 
   3502 /**
   3503   Display Memory Controller Information (Type 5) Capability.
   3504 
   3505   @param[in] Capability     The key of the structure.
   3506   @param[in] Option         The optional information.
   3507 **/
   3508 VOID
   3509 DisplayMcErrorCorrectCapability (
   3510   IN UINT8 Capability,
   3511   IN UINT8 Option
   3512   )
   3513 {
   3514   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_CORRECT_CAPABILITY), gShellDebug1HiiHandle);
   3515   PRINT_INFO_OPTION (Capability, Option);
   3516   PRINT_BITS_INFO (McErrorCorrectCapabilityTable, Capability);
   3517 }
   3518 
   3519 /**
   3520   Display Memory Controller Information (Type 5) Support.
   3521 
   3522   @param[in] Support        The key of the structure.
   3523   @param[in] Option         The optional information.
   3524 **/
   3525 VOID
   3526 DisplayMcInterleaveSupport (
   3527   IN UINT8 Support,
   3528   IN UINT8 Option
   3529   )
   3530 {
   3531   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_INTERLEAVE_SUPPORT), gShellDebug1HiiHandle);
   3532   PRINT_INFO_OPTION (Support, Option);
   3533   PRINT_TABLE_ITEM (McInterleaveSupportTable, Support);
   3534 }
   3535 
   3536 /**
   3537   Display Memory Controller Information (Type 5) speeds.
   3538 
   3539   @param[in] Speed          The key of the structure.
   3540   @param[in] Option         The optional information.
   3541 **/
   3542 VOID
   3543 DisplayMcMemorySpeeds (
   3544   IN UINT16  Speed,
   3545   IN UINT8   Option
   3546   )
   3547 {
   3548   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_MEMORY_SPEED), gShellDebug1HiiHandle);
   3549   PRINT_INFO_OPTION (Speed, Option);
   3550   PRINT_BITS_INFO (McMemorySpeedsTable, Speed);
   3551 }
   3552 
   3553 /**
   3554   Display Memory Controller Information (Type 5) voltage.
   3555 
   3556   @param[in] Voltage        The key of the structure.
   3557   @param[in] Option         The optional information.
   3558 **/
   3559 VOID
   3560 DisplayMemoryModuleVoltage (
   3561   IN UINT8 Voltage,
   3562   IN UINT8 Option
   3563   )
   3564 {
   3565   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_REQUIRED_VOLTAGES), gShellDebug1HiiHandle);
   3566   PRINT_INFO_OPTION (Voltage, Option);
   3567   PRINT_BITS_INFO (MemoryModuleVoltageTable, Voltage);
   3568 }
   3569 
   3570 /**
   3571   Display Memory Module Information (Type 6) type.
   3572 
   3573   @param[in] Type           The key of the structure.
   3574   @param[in] Option         The optional information.
   3575 **/
   3576 VOID
   3577 DisplayMmMemoryType (
   3578   IN UINT16  Type,
   3579   IN UINT8   Option
   3580   )
   3581 {
   3582   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_MODULE_TYPE), gShellDebug1HiiHandle);
   3583   PRINT_INFO_OPTION (Type, Option);
   3584   PRINT_BITS_INFO (MmMemoryTypeTable, Type);
   3585 }
   3586 
   3587 /**
   3588   Display Memory Module Information (Type 6) status.
   3589 
   3590   @param[in] Status         The key of the structure.
   3591   @param[in] Option         The optional information.
   3592 **/
   3593 VOID
   3594 DisplayMmErrorStatus (
   3595   IN UINT8 Status,
   3596   IN UINT8 Option
   3597   )
   3598 {
   3599   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_MODULE_ERROR_STATUS), gShellDebug1HiiHandle);
   3600   PRINT_INFO_OPTION (Status, Option);
   3601   PRINT_BITS_INFO (MmErrorStatusTable, Status);
   3602 }
   3603 
   3604 /**
   3605   Display Cache Information (Type 7) SRAM Type.
   3606 
   3607   @param[in] Type           The key of the structure.
   3608   @param[in] Option         The optional information.
   3609 **/
   3610 VOID
   3611 DisplayCacheSRAMType (
   3612   IN UINT16  Type,
   3613   IN UINT8   Option
   3614   )
   3615 {
   3616   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_CACHE_SRAM_TYPE), gShellDebug1HiiHandle);
   3617   PRINT_INFO_OPTION ((UINT8) Type, Option);
   3618   PRINT_BITS_INFO (CacheSRAMTypeTable, (UINT8) Type);
   3619 }
   3620 
   3621 /**
   3622   Display Cache Information (Type 7) correcting Type.
   3623 
   3624   @param[in] Type           The key of the structure.
   3625   @param[in] Option         The optional information.
   3626 **/
   3627 VOID
   3628 DisplayCacheErrCorrectingType (
   3629   IN UINT8 Type,
   3630   IN UINT8 Option
   3631   )
   3632 {
   3633   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_CACHE_ERROR_CORRECTING), gShellDebug1HiiHandle);
   3634   PRINT_INFO_OPTION (Type, Option);
   3635   PRINT_TABLE_ITEM (CacheErrCorrectingTypeTable, Type);
   3636 }
   3637 
   3638 /**
   3639   Display Cache Information (Type 7) Type.
   3640 
   3641   @param[in] Type           The key of the structure.
   3642   @param[in] Option         The optional information.
   3643 **/
   3644 VOID
   3645 DisplayCacheSystemCacheType (
   3646   IN UINT8 Type,
   3647   IN UINT8 Option
   3648   )
   3649 {
   3650   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_CACHE_SYSTEM_TYPE), gShellDebug1HiiHandle);
   3651   PRINT_INFO_OPTION (Type, Option);
   3652   PRINT_TABLE_ITEM (CacheSystemCacheTypeTable, Type);
   3653 }
   3654 
   3655 /**
   3656   Display Cache Information (Type 7) Associativity.
   3657 
   3658   @param[in] Associativity  The key of the structure.
   3659   @param[in] Option         The optional information.
   3660 **/
   3661 VOID
   3662 DisplayCacheAssociativity (
   3663   IN UINT8 Associativity,
   3664   IN UINT8 Option
   3665   )
   3666 {
   3667   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_CACHE_ASSOCIATIVITY), gShellDebug1HiiHandle);
   3668   PRINT_INFO_OPTION (Associativity, Option);
   3669   PRINT_TABLE_ITEM (CacheAssociativityTable, Associativity);
   3670 }
   3671 
   3672 /**
   3673   Display Port Connector Information  (Type 8) type.
   3674 
   3675   @param[in] Type       The key of the structure.
   3676   @param[in] Option     The optional information.
   3677 **/
   3678 VOID
   3679 DisplayPortConnectorType (
   3680   IN UINT8 Type,
   3681   IN UINT8 Option
   3682   )
   3683 {
   3684   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PORT_CONNECTOR_TYPE), gShellDebug1HiiHandle);
   3685   PRINT_INFO_OPTION (Type, Option);
   3686   PRINT_TABLE_ITEM (PortConnectorTypeTable, Type);
   3687 }
   3688 
   3689 /**
   3690   Display Port Connector Information  (Type 8) port type.
   3691 
   3692   @param[in] Type       The key of the structure.
   3693   @param[in] Option     The optional information.
   3694 **/
   3695 VOID
   3696 DisplayPortType (
   3697   IN UINT8 Type,
   3698   IN UINT8 Option
   3699   )
   3700 {
   3701   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PORT_TYPE), gShellDebug1HiiHandle);
   3702   PRINT_INFO_OPTION (Type, Option);
   3703   PRINT_TABLE_ITEM (PortTypeTable, Type);
   3704 }
   3705 
   3706 /**
   3707   Display System Slots (Type 9) slot type.
   3708 
   3709   @param[in] Type       The key of the structure.
   3710   @param[in] Option     The optional information.
   3711 **/
   3712 VOID
   3713 DisplaySystemSlotType (
   3714   IN UINT8 Type,
   3715   IN UINT8 Option
   3716   )
   3717 {
   3718   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_TYPE), gShellDebug1HiiHandle);
   3719   PRINT_INFO_OPTION (Type, Option);
   3720   PRINT_TABLE_ITEM (SystemSlotTypeTable, Type);
   3721 }
   3722 
   3723 /**
   3724   Display System Slots (Type 9) data bus width.
   3725 
   3726   @param[in] Width      The key of the structure.
   3727   @param[in] Option     The optional information.
   3728 **/
   3729 VOID
   3730 DisplaySystemSlotDataBusWidth (
   3731   IN UINT8 Width,
   3732   IN UINT8 Option
   3733   )
   3734 {
   3735   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_DATA), gShellDebug1HiiHandle);
   3736   PRINT_INFO_OPTION (Width, Option);
   3737   PRINT_TABLE_ITEM (SystemSlotDataBusWidthTable, Width);
   3738 }
   3739 
   3740 /**
   3741   Display System Slots (Type 9) usage information.
   3742 
   3743   @param[in] Usage      The key of the structure.
   3744   @param[in] Option     The optional information.
   3745 **/
   3746 VOID
   3747 DisplaySystemSlotCurrentUsage (
   3748   IN UINT8 Usage,
   3749   IN UINT8 Option
   3750   )
   3751 {
   3752   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_CURRENT_USAGE), gShellDebug1HiiHandle);
   3753   PRINT_INFO_OPTION (Usage, Option);
   3754   PRINT_TABLE_ITEM (SystemSlotCurrentUsageTable, Usage);
   3755 }
   3756 
   3757 /**
   3758   Display System Slots (Type 9) slot length.
   3759 
   3760   @param[in] Length     The key of the structure.
   3761   @param[in] Option     The optional information.
   3762 **/
   3763 VOID
   3764 DisplaySystemSlotLength (
   3765   IN UINT8 Length,
   3766   IN UINT8 Option
   3767   )
   3768 {
   3769   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_LENGTH), gShellDebug1HiiHandle);
   3770   PRINT_INFO_OPTION (Length, Option);
   3771   PRINT_TABLE_ITEM (SystemSlotLengthTable, Length);
   3772 }
   3773 
   3774 /**
   3775   Display System Slots (Type 9) characteristics.
   3776 
   3777   @param[in] Chara1     The key of the structure.
   3778   @param[in] Option     The optional information.
   3779 **/
   3780 VOID
   3781 DisplaySlotCharacteristics1 (
   3782   IN UINT8 Chara1,
   3783   IN UINT8 Option
   3784   )
   3785 {
   3786   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SLOT_CHARACTERISTICS), gShellDebug1HiiHandle);
   3787   PRINT_INFO_OPTION (Chara1, Option);
   3788   PRINT_BITS_INFO (SlotCharacteristics1Table, Chara1);
   3789 }
   3790 
   3791 /**
   3792   Display System Slots (Type 9) characteristics.
   3793 
   3794   @param[in] Chara2     The key of the structure.
   3795   @param[in] Option     The optional information.
   3796 **/
   3797 VOID
   3798 DisplaySlotCharacteristics2 (
   3799   IN UINT8 Chara2,
   3800   IN UINT8 Option
   3801   )
   3802 {
   3803   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SLOT_CHARACTERISTICS_2), gShellDebug1HiiHandle);
   3804   PRINT_INFO_OPTION (Chara2, Option);
   3805   PRINT_BITS_INFO (SlotCharacteristics2Table, Chara2);
   3806 }
   3807 
   3808 /**
   3809   Display On Board Devices Information (Type 10) types.
   3810 
   3811   @param[in] Type       The key of the structure.
   3812   @param[in] Option     The optional information.
   3813 **/
   3814 VOID
   3815 DisplayOnboardDeviceTypes (
   3816   IN UINT8 Type,
   3817   IN UINT8 Option
   3818   )
   3819 {
   3820   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_ONBOARD_DEVICE_TYPE), gShellDebug1HiiHandle);
   3821   PRINT_INFO_OPTION (Type, Option);
   3822   PRINT_TABLE_ITEM (OnboardDeviceTypesTable, Type);
   3823 }
   3824 
   3825 /**
   3826   Display System Event Log (Type 15) types.
   3827 
   3828   @param[in] Type       The key of the structure.
   3829   @param[in] Option     The optional information.
   3830 **/
   3831 VOID
   3832 DisplaySELTypes (
   3833   IN UINT8 Type,
   3834   IN UINT8 Option
   3835   )
   3836 {
   3837   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_EVENT_LOG_TYPE), gShellDebug1HiiHandle);
   3838   PRINT_INFO_OPTION (Type, Option);
   3839   PRINT_TABLE_ITEM (SELTypesTable, Type);
   3840 }
   3841 
   3842 /**
   3843   Display System Event Log (Type 15) format type.
   3844 
   3845   @param[in] Type       The key of the structure.
   3846   @param[in] Option     The optional information.
   3847 **/
   3848 VOID
   3849 DisplaySELVarDataFormatType (
   3850   IN UINT8 Type,
   3851   IN UINT8 Option
   3852   )
   3853 {
   3854   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_EVENT_LOG_VAR_DATA_FORMAT), gShellDebug1HiiHandle);
   3855   PRINT_INFO_OPTION (Type, Option);
   3856   PRINT_TABLE_ITEM (SELVarDataFormatTypeTable, Type);
   3857 }
   3858 
   3859 /**
   3860   Display System Event Log (Type 15) dw1.
   3861 
   3862   @param[in] Key        The key of the structure.
   3863   @param[in] Option     The optional information.
   3864 **/
   3865 VOID
   3866 DisplayPostResultsBitmapDw1 (
   3867   IN UINT32  Key,
   3868   IN UINT8   Option
   3869   )
   3870 {
   3871   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_POST_RESULTS_BITMAP), gShellDebug1HiiHandle);
   3872   PRINT_INFO_OPTION (Key, Option);
   3873   PRINT_BITS_INFO (PostResultsBitmapDw1Table, Key);
   3874 }
   3875 
   3876 /**
   3877   Display System Event Log (Type 15) dw2.
   3878 
   3879   @param[in] Key        The key of the structure.
   3880   @param[in] Option     The optional information.
   3881 **/
   3882 VOID
   3883 DisplayPostResultsBitmapDw2 (
   3884   IN UINT32  Key,
   3885   IN UINT8   Option
   3886   )
   3887 {
   3888   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_POST_RESULTS_SECOND_DWORD), gShellDebug1HiiHandle);
   3889   PRINT_INFO_OPTION (Key, Option);
   3890   PRINT_BITS_INFO (PostResultsBitmapDw2Table, Key);
   3891 }
   3892 
   3893 /**
   3894   Display System Event Log (Type 15) type.
   3895 
   3896   @param[in] SMType     The key of the structure.
   3897   @param[in] Option     The optional information.
   3898 **/
   3899 VOID
   3900 DisplaySELSysManagementTypes (
   3901   IN UINT32  SMType,
   3902   IN UINT8   Option
   3903   )
   3904 {
   3905   UINT8       Temp;
   3906 
   3907   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_MANAGEMENT_TYPES), gShellDebug1HiiHandle);
   3908   PRINT_INFO_OPTION (SMType, Option);
   3909 
   3910   //
   3911   // Deal with wide range Value
   3912   //
   3913   if (SMType >= 0x80000000) {
   3914     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_OEM_ASSIGNED), gShellDebug1HiiHandle);
   3915   } else if (SMType >= 0x00020000) {
   3916     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_RSVD_FOR_FUTURE_ASSIGN), gShellDebug1HiiHandle);
   3917   } else if (SMType >= 0x00010000) {
   3918     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_MANAGEMENT_PROBE), gShellDebug1HiiHandle);
   3919   } else if (SMType >= 0x31) {
   3920     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_RSVD_FOR_FUTURE_ASSIGN), gShellDebug1HiiHandle);
   3921   } else {
   3922     //
   3923     // Deal with One byte data
   3924     //
   3925     Temp = (UINT8) (SMType & 0x3F);
   3926     PRINT_TABLE_ITEM (SELSysManagementTypesTable, Temp);
   3927   }
   3928 }
   3929 
   3930 /**
   3931   Display Physical Memory Array (Type 16) Location.
   3932 
   3933   @param[in] Location   The key of the structure.
   3934   @param[in] Option     The optional information.
   3935 **/
   3936 VOID
   3937 DisplayPMALocation (
   3938   IN UINT8 Location,
   3939   IN UINT8 Option
   3940   )
   3941 {
   3942   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_LOCATION), gShellDebug1HiiHandle);
   3943   PRINT_INFO_OPTION (Location, Option);
   3944   PRINT_TABLE_ITEM (PMALocationTable, Location);
   3945 }
   3946 
   3947 /**
   3948   Display Physical Memory Array (Type 16) Use.
   3949 
   3950   @param[in] Use        The key of the structure.
   3951   @param[in] Option     The optional information.
   3952 **/
   3953 VOID
   3954 DisplayPMAUse (
   3955   IN UINT8 Use,
   3956   IN UINT8 Option
   3957   )
   3958 {
   3959   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_USE), gShellDebug1HiiHandle);
   3960   PRINT_INFO_OPTION (Use, Option);
   3961   PRINT_TABLE_ITEM (PMAUseTable, Use);
   3962 }
   3963 
   3964 /**
   3965   Display Physical Memory Array (Type 16) Types.
   3966 
   3967   @param[in] Type       The key of the structure.
   3968   @param[in] Option     The optional information.
   3969 **/
   3970 VOID
   3971 DisplayPMAErrorCorrectionTypes (
   3972   IN UINT8 Type,
   3973   IN UINT8 Option
   3974   )
   3975 {
   3976   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_ERROR), gShellDebug1HiiHandle);
   3977   PRINT_INFO_OPTION (Type, Option);
   3978   PRINT_TABLE_ITEM (PMAErrorCorrectionTypesTable, Type);
   3979 }
   3980 
   3981 /**
   3982   Display Memory Device (Type 17) form factor.
   3983 
   3984   @param[in] FormFactor The key of the structure.
   3985   @param[in] Option     The optional information.
   3986 **/
   3987 VOID
   3988 DisplayMemoryDeviceFormFactor (
   3989   IN UINT8 FormFactor,
   3990   IN UINT8 Option
   3991   )
   3992 {
   3993   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_FORM_FACTOR), gShellDebug1HiiHandle);
   3994   PRINT_INFO_OPTION (FormFactor, Option);
   3995   PRINT_TABLE_ITEM (MemoryDeviceFormFactorTable, FormFactor);
   3996 }
   3997 
   3998 /**
   3999   Display Memory Device (Type 17) type.
   4000 
   4001   @param[in] Type     The key of the structure.
   4002   @param[in] Option   The optional information.
   4003 **/
   4004 VOID
   4005 DisplayMemoryDeviceType (
   4006   IN UINT8 Type,
   4007   IN UINT8 Option
   4008   )
   4009 {
   4010   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_TYPE), gShellDebug1HiiHandle);
   4011   PRINT_INFO_OPTION (Type, Option);
   4012   PRINT_TABLE_ITEM (MemoryDeviceTypeTable, Type);
   4013 }
   4014 
   4015 /**
   4016   Display Memory Device (Type 17) details.
   4017 
   4018   @param[in] Para     The key of the structure.
   4019   @param[in] Option   The optional information.
   4020 **/
   4021 VOID
   4022 DisplayMemoryDeviceTypeDetail (
   4023   IN UINT16  Para,
   4024   IN UINT8   Option
   4025   )
   4026 {
   4027   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_TYPE_DETAIL), gShellDebug1HiiHandle);
   4028   PRINT_INFO_OPTION (Para, Option);
   4029   PRINT_BITS_INFO (MemoryDeviceTypeDetailTable, Para);
   4030 }
   4031 
   4032 /**
   4033   Display 32-bit Memory Error Information (Type 18) type.
   4034 
   4035   @param[in] ErrorType  The key of the structure.
   4036   @param[in] Option     The optional information.
   4037 **/
   4038 VOID
   4039 DisplayMemoryErrorType (
   4040   IN UINT8 ErrorType,
   4041   IN UINT8 Option
   4042   )
   4043 {
   4044   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_ERROR_INFO), gShellDebug1HiiHandle);
   4045   PRINT_INFO_OPTION (ErrorType, Option);
   4046   PRINT_TABLE_ITEM (MemoryErrorTypeTable, ErrorType);
   4047 }
   4048 
   4049 /**
   4050   Display 32-bit Memory Error Information (Type 18) error granularity.
   4051 
   4052   @param[in] Granularity  The key of the structure.
   4053   @param[in] Option       The optional information.
   4054 **/
   4055 VOID
   4056 DisplayMemoryErrorGranularity (
   4057   IN UINT8 Granularity,
   4058   IN UINT8 Option
   4059   )
   4060 {
   4061   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_ERROR_GRANULARITY), gShellDebug1HiiHandle);
   4062   PRINT_INFO_OPTION (Granularity, Option);
   4063   PRINT_TABLE_ITEM (MemoryErrorGranularityTable, Granularity);
   4064 }
   4065 
   4066 /**
   4067   Display 32-bit Memory Error Information (Type 18) error information.
   4068 
   4069   @param[in] Operation  The key of the structure.
   4070   @param[in] Option     The optional information.
   4071 **/
   4072 VOID
   4073 DisplayMemoryErrorOperation (
   4074   IN UINT8 Operation,
   4075   IN UINT8 Option
   4076   )
   4077 {
   4078   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_ERROR_OP), gShellDebug1HiiHandle);
   4079   PRINT_INFO_OPTION (Operation, Option);
   4080   PRINT_TABLE_ITEM (MemoryErrorOperationTable, Operation);
   4081 }
   4082 
   4083 /**
   4084   Display Built-in Pointing Device (Type 21) type information.
   4085 
   4086   @param[in] Type     The key of the structure.
   4087   @param[in] Option   The optional information.
   4088 **/
   4089 VOID
   4090 DisplayPointingDeviceType (
   4091   IN UINT8 Type,
   4092   IN UINT8 Option
   4093   )
   4094 {
   4095   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_POINTING_DEVICE_TYPE), gShellDebug1HiiHandle);
   4096   PRINT_INFO_OPTION (Type, Option);
   4097   PRINT_TABLE_ITEM (PointingDeviceTypeTable, Type);
   4098 }
   4099 
   4100 /**
   4101   Display Built-in Pointing Device (Type 21) information.
   4102 
   4103   @param[in] Interface  The key of the structure.
   4104   @param[in] Option     The optional information.
   4105 **/
   4106 VOID
   4107 DisplayPointingDeviceInterface (
   4108   IN UINT8   Interface,
   4109   IN UINT8   Option
   4110   )
   4111 {
   4112   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_POINTING_DEVICE_INTERFACE), gShellDebug1HiiHandle);
   4113   PRINT_INFO_OPTION (Interface, Option);
   4114   PRINT_TABLE_ITEM (PointingDeviceInterfaceTable, Interface);
   4115 }
   4116 
   4117 /**
   4118   Display Portable Battery  (Type 22) information.
   4119 
   4120   @param[in] Key      The key of the structure.
   4121   @param[in] Option   The optional information.
   4122 **/
   4123 VOID
   4124 DisplayPBDeviceChemistry (
   4125   IN UINT8 Key,
   4126   IN UINT8 Option
   4127   )
   4128 {
   4129   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PORTABLE_BATT_DEV_CHEM), gShellDebug1HiiHandle);
   4130   PRINT_INFO_OPTION (Key, Option);
   4131   PRINT_TABLE_ITEM (PBDeviceChemistryTable, Key);
   4132 }
   4133 
   4134 /**
   4135   Display Voltage Probe (Type 26) location information.
   4136 
   4137   @param[in] Key      The key of the structure.
   4138   @param[in] Option   The optional information.
   4139 **/
   4140 VOID
   4141 DisplayVPLocation (
   4142   IN UINT8 Key,
   4143   IN UINT8 Option
   4144   )
   4145 {
   4146   UINT8       Loc;
   4147 
   4148   Loc = (UINT8) ((Key & 0xE0) >> 5);
   4149   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_VOLTAGE_PROBE_LOC), gShellDebug1HiiHandle);
   4150   PRINT_INFO_OPTION (Loc, Option);
   4151   PRINT_TABLE_ITEM (VPLocationTable, Loc);
   4152 }
   4153 
   4154 /**
   4155   Display Voltage Probe (Type 26) status ype information.
   4156 
   4157   @param[in] Key      The key of the structure.
   4158   @param[in] Option   The optional information.
   4159 **/
   4160 VOID
   4161 DisplayVPStatus (
   4162   IN UINT8 Key,
   4163   IN UINT8 Option
   4164   )
   4165 {
   4166   UINT8       Status;
   4167 
   4168   Status = (UINT8) (Key & 0x1F);
   4169   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_VOLTAGE_PROBE_STATUS), gShellDebug1HiiHandle);
   4170   PRINT_INFO_OPTION (Status, Option);
   4171   PRINT_TABLE_ITEM (VPStatusTable, Status);
   4172 }
   4173 
   4174 /**
   4175   Display Cooling (Type 27) status information.
   4176 
   4177   @param[in] Key      The key of the structure.
   4178   @param[in] Option   The optional information.
   4179 **/
   4180 VOID
   4181 DisplayCoolingDeviceStatus (
   4182   IN UINT8 Key,
   4183   IN UINT8 Option
   4184   )
   4185 {
   4186   UINT8       Status;
   4187 
   4188   Status = (UINT8) ((Key & 0xE0) >> 5);
   4189   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_COOLING_DEV_STATUS), gShellDebug1HiiHandle);
   4190   PRINT_INFO_OPTION (Status, Option);
   4191   PRINT_TABLE_ITEM (CoolingDeviceStatusTable, Status);
   4192 }
   4193 
   4194 /**
   4195   Display Cooling (Type 27) type information.
   4196 
   4197   @param[in] Key      The key of the structure.
   4198   @param[in] Option   The optional information.
   4199 **/
   4200 VOID
   4201 DisplayCoolingDeviceType (
   4202   IN UINT8 Key,
   4203   IN UINT8 Option
   4204   )
   4205 {
   4206   UINT8       Type;
   4207 
   4208   Type = (UINT8) (Key & 0x1F);
   4209   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_COOLING_DEV_TYPE), gShellDebug1HiiHandle);
   4210   PRINT_INFO_OPTION (Type, Option);
   4211   PRINT_TABLE_ITEM (CoolingDeviceTypeTable, Type);
   4212 }
   4213 
   4214 /**
   4215   Display Temperature Probe (Type 28) status information.
   4216 
   4217   @param[in] Key      The key of the structure.
   4218   @param[in] Option   The optional information.
   4219 **/
   4220 VOID
   4221 DisplayTemperatureProbeStatus (
   4222   IN UINT8 Key,
   4223   IN UINT8 Option
   4224   )
   4225 {
   4226   UINT8       Status;
   4227 
   4228   Status = (UINT8) ((Key & 0xE0) >> 5);
   4229   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_TEMP_PROBE), gShellDebug1HiiHandle);
   4230   PRINT_INFO_OPTION (Status, Option);
   4231   PRINT_TABLE_ITEM (TemperatureProbeStatusTable, Status);
   4232 }
   4233 
   4234 /**
   4235   Display Temperature Probe  (Type 28) location information.
   4236 
   4237   @param[in] Key      The key of the structure.
   4238   @param[in] Option   The optional information.
   4239 **/
   4240 VOID
   4241 DisplayTemperatureProbeLoc (
   4242   IN UINT8 Key,
   4243   IN UINT8 Option
   4244   )
   4245 {
   4246   UINT8       Loc;
   4247 
   4248   Loc = (UINT8) (Key & 0x1F);
   4249   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_VOLTAGE_PROBE_LOC), gShellDebug1HiiHandle);
   4250   PRINT_INFO_OPTION (Loc, Option);
   4251   PRINT_TABLE_ITEM (TemperatureProbeLocTable, Loc);
   4252 }
   4253 
   4254 /**
   4255   Display Electrical Current Probe (Type 29)  status information.
   4256 
   4257   @param[in] Key      The key of the structure.
   4258   @param[in] Option   The optional information.
   4259 **/
   4260 VOID
   4261 DisplayECPStatus (
   4262   IN UINT8 Key,
   4263   IN UINT8 Option
   4264   )
   4265 {
   4266   UINT8       Status;
   4267 
   4268   Status = (UINT8) ((Key & 0xE0) >> 5);
   4269   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_ELEC_PROBE_STATUS), gShellDebug1HiiHandle);
   4270   PRINT_INFO_OPTION (Status, Option);
   4271   PRINT_TABLE_ITEM (ECPStatusTable, Status);
   4272 }
   4273 
   4274 /**
   4275   Display Type 29 information.
   4276 
   4277   @param[in] Key      The key of the structure.
   4278   @param[in] Option   The optional information.
   4279 **/
   4280 VOID
   4281 DisplayECPLoc (
   4282   IN UINT8 Key,
   4283   IN UINT8 Option
   4284   )
   4285 {
   4286   UINT8       Loc;
   4287 
   4288   Loc = (UINT8) (Key & 0x1F);
   4289   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_ELEC_PROBE_LOC), gShellDebug1HiiHandle);
   4290   PRINT_INFO_OPTION (Loc, Option);
   4291   PRINT_TABLE_ITEM (ECPLocTable, Loc);
   4292 }
   4293 
   4294 /**
   4295   Display Management Device (Type 34) Type.
   4296 
   4297   @param[in] Key      The key of the structure.
   4298   @param[in] Option   The optional information.
   4299 **/
   4300 VOID
   4301 DisplayMDType (
   4302   IN UINT8 Key,
   4303   IN UINT8 Option
   4304   )
   4305 {
   4306   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MANAGEMENT_DEV_TYPE), gShellDebug1HiiHandle);
   4307   PRINT_INFO_OPTION (Key, Option);
   4308   PRINT_TABLE_ITEM (MDTypeTable, Key);
   4309 }
   4310 
   4311 /**
   4312   Display Management Device (Type 34) Address Type.
   4313 
   4314   @param[in] Key      The key of the structure.
   4315   @param[in] Option   The optional information.
   4316 **/
   4317 VOID
   4318 DisplayMDAddressType (
   4319   IN UINT8 Key,
   4320   IN UINT8 Option
   4321   )
   4322 {
   4323   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MANAGEMENT_DEV_ADDR_TYPE), gShellDebug1HiiHandle);
   4324   PRINT_INFO_OPTION (Key, Option);
   4325   PRINT_TABLE_ITEM (MDAddressTypeTable, Key);
   4326 }
   4327 
   4328 /**
   4329   Display Memory Channel (Type 37) information.
   4330 
   4331   @param[in] Key      The key of the structure.
   4332   @param[in] Option   The optional information.
   4333 **/
   4334 VOID
   4335 DisplayMemoryChannelType (
   4336   IN UINT8 Key,
   4337   IN UINT8 Option
   4338   )
   4339 {
   4340   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_CHANNEL_TYPE), gShellDebug1HiiHandle);
   4341   PRINT_INFO_OPTION (Key, Option);
   4342   PRINT_TABLE_ITEM (MemoryChannelTypeTable, Key);
   4343 }
   4344 
   4345 /**
   4346   Display IPMI Device Information (Type 38) information.
   4347 
   4348   @param[in] Key      The key of the structure.
   4349   @param[in] Option   The optional information.
   4350 **/
   4351 VOID
   4352 DisplayIPMIDIBMCInterfaceType (
   4353   IN UINT8 Key,
   4354   IN UINT8 Option
   4355   )
   4356 {
   4357   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_BMC_INTERFACE_TYPE), gShellDebug1HiiHandle);
   4358   PRINT_INFO_OPTION (Key, Option);
   4359   PRINT_TABLE_ITEM (IPMIDIBMCInterfaceTypeTable, Key);
   4360 }
   4361 
   4362 /**
   4363   Display the structure type information.
   4364 
   4365   @param[in] Key      The key of the structure.
   4366   @param[in] Option   The optional information.
   4367 **/
   4368 VOID
   4369 DisplayStructureTypeInfo (
   4370   IN UINT8 Key,
   4371   IN UINT8 Option
   4372   )
   4373 {
   4374   //
   4375   // display
   4376   //
   4377   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_STRUCT_TYPE), gShellDebug1HiiHandle);
   4378   PRINT_INFO_OPTION (Key, Option);
   4379   PRINT_TABLE_ITEM (StructureTypeInfoTable, Key);
   4380 }
   4381