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