2015年1月5日 星期一

[UEFI/EDK II Sample Code] PCI and PCI-E Device Scan

This sample demonstrates how to scan all PCI and PCI-E device.

LsPciDev.inf
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = LsPciDev
  FILE_GUID                      = 8cfdb267-ceed-4e72-b541-a44ce670c037
  MODULE_TYPE                    = UEFI_APPLICATION
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = UefiMain

[Sources]  
  LsPciDev.c
  PciVenInfo.h
  PciClassInfo.h
  
[Packages]
  MdePkg/MdePkg.dec
  ShellPkg/ShellPkg.dec
  MdeModulePkg/MdeModulePkg.dec
  StdLib/StdLib.dec
  EdkCompatibilityPkg/EdkCompatibilityPkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec
  IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec 
  
[LibraryClasses]
  UefiBootServicesTableLib
  UefiLib
  UefiApplicationEntryPoint
  PrintLib
  DebugLib
  ShellLib
  
[Protocols]
  gEfiPciRootBridgeIoProtocolGuid #metohd 1

LsPciDev.c
#include <Library/UefiLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/DebugLib.h>
#include <Protocol/PciIo.h>
#include <Protocol/PciRootBridgeIo.h>
#include <IndustryStandard/Pci22.h>
#include <Library/ShellLib.h>
#include <Library/UefiShellDebug1CommandsLib/Pci.h>
#include "PciVenInfo.h"
#include "PciClassInfo.h"

#define DID_OFFSET          2
#define Rev_ID_OFFSET       8
#define CLASS_CODE_OFFSET   9
#define HEADER_TYPE_OFFSET  0xE
#define CAP_POINTER         0x34
#define PCIE_DEVICE         0x10

UINT32 __inline SerachVenTable(UINT32 LowIndex,UINT32 HighIndex,PCI_VENTABLE SortedArray[],UINT16 TargetVID)
{   UINT32 Low,High,Mid;
    Low = LowIndex;
    High = HighIndex;
    Mid = (Low + High)/2;

    if(SortedArray[Mid].VenId == TargetVID)
        return Mid;
    else{
        if(TargetVID > SortedArray[Mid].VenId)
            Low = Mid + 1;
        else
            High = Mid - 1;
        if(High < Low)
            return 0xffffffff; //PCI_Ven_Info.h should be updated.
        else
   return SerachVenTable(Low,High,SortedArray,TargetVID);
    }
}

UINT32 __inline SerachPciClassTable(UINT32 LowIndex,UINT32 HighIndex,PCI_CLASSCODETABLE SortedArray[],UINT32 TargetClassCode)
{   UINT32 Low,High,Mid,ToClassCode;
    Low = LowIndex;
    High = HighIndex;
    Mid = (Low + High)/2;
 ToClassCode = 0x00000000 | PciClassCodeTable[Mid].BaseClass << 16 |
                  PciClassCodeTable[Mid].SubClass << 8 | PciClassCodeTable[Mid].ProgIf;
    if(ToClassCode == TargetClassCode)
        return Mid;
    else{
        if(TargetClassCode > ToClassCode)
            Low = Mid + 1;
        else
            High = Mid - 1;
        if(High < Low)
            return 0xffffffff; //PciClassInfo.h should be updated.
        else
   return SerachPciClassTable(Low,High,SortedArray,TargetClassCode);
    }
}

BOOLEAN __inline IsRoot(EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo,UINTN PciAddress){
 UINT8 CFGValue8;
 
 PciRootBridgeIo->Pci.Read(PciRootBridgeIo,EfiPciWidthUint8,PciAddress | HEADER_TYPE_OFFSET,1,&CFGValue8);
 if(CFGValue8 & PCI_BIT_0)
  return TRUE;
 else
  return FALSE;
}

BOOLEAN __inline IsPCIE(EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo, UINTN PciAddress){
 UINT8 CFGValue8 = 0xff;
 UINT16 Offset = CAP_POINTER;
 UINTN TempPciAddress = PciAddress | Offset;
 
 PciRootBridgeIo->Pci.Read(PciRootBridgeIo,EfiPciWidthUint8,TempPciAddress,1,&CFGValue8);
 Offset = CFGValue8;
 while(CFGValue8){
  TempPciAddress = PciAddress | Offset;
  PciRootBridgeIo->Pci.Read(PciRootBridgeIo,EfiPciWidthUint8,TempPciAddress,1,&CFGValue8);
  if(CFGValue8 != PCIE_DEVICE){
   TempPciAddress += 1;
   PciRootBridgeIo->Pci.Read(PciRootBridgeIo,EfiPciWidthUint8,TempPciAddress,1,&CFGValue8);
   Offset = CFGValue8;
  }
  else
   return TRUE;
 }
 return FALSE;
}

VOID __inline PrintDeviceInfo(EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo,UINTN PciAddress){
 UINT16 VID,DID;
 UINT32 ClassCode,Result;
 
 PciRootBridgeIo->Pci.Read(PciRootBridgeIo,EfiPciWidthUint16,PciAddress,1,&VID);
 PciRootBridgeIo->Pci.Read(PciRootBridgeIo,EfiPciWidthUint16,PciAddress | DID_OFFSET,1,&DID);
 PciRootBridgeIo->Pci.Read(PciRootBridgeIo,EfiPciWidthUint32,PciAddress | Rev_ID_OFFSET,1,&ClassCode);
 ClassCode = ClassCode >> 8; //get class code
 
 if(IsPCIE(PciRootBridgeIo,PciAddress))
  Print(L"PCIE "); 
 if(IsRoot(PciRootBridgeIo,PciAddress))
  Print(L"Root Bridge ");
 
 Result = SerachVenTable(0,PCI_VENTABLE_LEN-1,PciVenTable,VID);
 if(Result != 0xffffffff)
  Print(L"%s (%04x) ",PciVenTable[Result].VenStr,VID);
 else
  Print(L"Unknown Vendor (%4x)",VID);
  
 Print(L"Device ID: %04x Class Code: %06x\n",DID,ClassCode); 
 Result = SerachPciClassTable(0,PCI_CLASSCODETABLE_LEN-1,PciClassCodeTable,ClassCode);
 if(Result != 0xffffffff){
  Print(L"Name: %s %s %s\n",PciClassCodeTable[Result].BaseDesc,\
  PciClassCodeTable[Result].SubDesc,PciClassCodeTable[Result].ProgDesc);
  
 }
 else{
  Print(L"Name: %s %s %s\n",PciClassCodeTable[PCI_CLASSCODETABLE_LEN-1].BaseDesc,\
  PciClassCodeTable[PCI_CLASSCODETABLE_LEN-1].SubDesc,PciClassCodeTable[PCI_CLASSCODETABLE_LEN-1].ProgDesc);
 }
}

VOID __inline ScanPCIDevices(EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo){
 UINTN Bus,Fun,Dev;
 UINTN PciAddress;
 UINT16 VID;
 UINT8 CFGValue8;
 CFGValue8 = 0;
 
 for(Bus = 0; Bus <= PCI_MAX_BUS;Bus++){
  for(Dev = 0;Dev <= PCI_MAX_DEVICE;Dev++){
   for(Fun = 0;Fun <= PCI_MAX_FUNC;Fun++){
    PciAddress = CALC_EFI_PCI_ADDRESS(Bus,Dev,Fun,0);
    PciRootBridgeIo->Pci.Read(PciRootBridgeIo,EfiPciWidthUint16,PciAddress,1,&VID);
    
    if(VID == 0xFFFF)
     continue;
    
    PrintDeviceInfo(PciRootBridgeIo,PciAddress);
     
    if(Fun == 0){
     //is multi-function?
     PciRootBridgeIo->Pci.Read(PciRootBridgeIo,EfiPciWidthUint8,PciAddress| HEADER_TYPE_OFFSET,1,&CFGValue8);
     if((CFGValue8 & PCI_BIT_7) == 0)
      break; //no
    }    
   }
  }
 }
}

EFI_STATUS
EFIAPI
UefiMain (
          IN EFI_HANDLE        ImageHandle,
          IN EFI_SYSTEM_TABLE  *SystemTable
          )
{    
 EFI_STATUS        Status;
 UINTN                      HandleCount;
 EFI_HANDLE                 *HandleBuffer;
 UINTN                      i;
 EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *PciRootBridgeIo;
 
 //A lot of M.B. not includes Shell 2.0 into the UEFI so far.
 //Thus, this App will crash when calling beLow protocol under old shell environment.
 //gEfiShellProtocol->EnablePageBreak();
 //How to solve it: compile shell 2.0 (ShellPkg) and 
 //execute the shell.efi under your old shell.
 //However, there are a lot of bug in the Shell 2.0 (ShellPkg) now.
 
 //Method 1: Using EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL
 Status = gBS->LocateHandleBuffer (
    ByProtocol,
    &gEfiPciRootBridgeIoProtocolGuid,
    NULL,
    &HandleCount,
    &HandleBuffer
   );
 ASSERT_EFI_ERROR(Status);
 
 //Method 2: Using EFI_PCI_IO_PROTOCOL
 //Note: this sample only shows you how to use the method 1.
 
 Print(L"Number of PCI Root Bridge: %d\n",HandleCount);

 for (i = 0; i < HandleCount; i++) {
 
  Status = gBS->HandleProtocol (HandleBuffer[i], &gEfiPciRootBridgeIoProtocolGuid, &PciRootBridgeIo);
  ASSERT_EFI_ERROR(Status); 
  ScanPCIDevices(PciRootBridgeIo);
 }
 
    return EFI_SUCCESS;
}


PciVenInfo.h
#ifndef _PCI_VEN_INFO_H_
#define _PCI_VEN_INFO_H_

typedef struct _PCI_VENTABLE
{
 UINT16  VenId;
 UINT16  *VenStr;
}PCI_VENTABLE, *PPCI_VENTABLE;

PCI_VENTABLE PciVenTable[] =
{
 {0x001A, L"scend Communications, Inc."},
 {0x003D, L"Martin-Marietta Corporation"},
 {0x0E11, L"Compaq"},
 {0x1000, L"Symbios Logic Inc."},
 {0x1002, L"ATI"},
 {0x1003, L"ULSI Systems"},
 {0x1004, L"VLSI Technologies"},
 {0x1005, L"Avance Logics (ADL)"},
 {0x1006, L"Reply Group"},
 {0x1007, L"Netframe Systems Inc."},
 {0x1008, L"Epson"},
 {0x100A, L"Phoenix Technologies"},
 {0x100B, L"National Semiconductor"},
 {0x100C, L"Tseng Labs"},
 {0x100D, L"AST Research"},
 {0x100E, L"Weitek"},
 {0x1010, L"Video Logic Ltd"},
 {0x1011, L"DEC"},
 {0x1012, L"Micronics Computers"},
 {0x1013, L"Cirrus Logic"},
 {0x1014, L"IBM"},
 {0x1015, L"LSI Logic Corp. of Canada"},
 {0x1016, L"ICL Personal Systems"},
 {0x1017, L"SPEA Software AG"},
 {0x1018, L"Unisys"},
 {0x1019, L"EliteGroup Computer Sys"},
 {0x101A, L"NCR/AT&ampT GIS"},
 {0x101B, L"Vitesse Semiconductor"},
 {0x101C, L"Western Digital"},
 {0x101E, L"AMI"},
 {0x101F, L"Picturetel"},
 {0x1020, L"Hitachi Computer Electronics"},
 {0x1021, L"Oki Electric Industry"},
 {0x1022, L"Advanced Micro Devices"},
 {0x1023, L"Trident Microsystems"},
 {0x1024, L"Zenith Data Systems"},
 {0x1025, L"Acer"},
 {0x1028, L"Dell Computer Corporation"},
 {0x1029, L"Siemens Nixdorf"},
 {0x102A, L"LSI Logic, Headland Division"},
 {0x102B, L"Matrox"},
 {0x102C, L"Chips & Technologies"},
 {0x102D, L"Wyse Technologies"},
 {0x102E, L"Olivetti Advanced Technology"},
 {0x102F, L"Toshiba America"},
 {0x1030, L"TMC Research"},
 {0x1031, L"Miro Computer Products AG"},
 {0x1032, L"Compaq"},
 {0x1033, L"NEC Corporation"},
 {0x1034, L"Burndy Corporation"},
 {0x1035, L"Computers and Communications Research Lab"},
 {0x1036, L"Future Domain"},
 {0x1037, L"Hitachi Micro Systems"},
 {0x1038, L"AMP Incorporated"},
 {0x1039, L"Silicon Integrated System (SIS)"},
 {0x103A, L"Seiko Epson Corporation"},
 {0x103B, L"Tatung Corp. of America"},
 {0x103C, L"Hewlett-Packard"},
 {0x103E, L"Solliday"},
 {0x103F, L"Logic Modeling"},
 {0x1040, L"Kubota Pacific"},
 {0x1041, L"Computrend"},
 {0x1042, L"PC Technology"},
 {0x1043, L"Asustek"},
 {0x1044, L"Distributed Processing Technology"},
 {0x1045, L"OPTi"},
 {0x1046, L"IPC Corporation, Ltd."},
 {0x1047, L"Genoa Systems Corp."},
 {0x1048, L"Elsa GmbH"},
 {0x1049, L"Fountain Technology"},
 {0x104A, L"SGS Thomson Microelectric"},
 {0x104B, L"BusLogic"},
 {0x104C, L"Texas Instruments"},
 {0x104D, L"Sony Corporation"},
 {0x104E, L"Oak Technology"},
 {0x104F, L"Co-Time Computer Ltd."},
 {0x1050, L"Winbond"},
 {0x1051, L"Anigma Corp."},
 {0x1052, L"Young Micro Systems"},
 {0x1054, L"Hitachi, Ltd."},
 {0x1055, L"EFAR Microsystems"},
 {0x1056, L"ICL"},
 {0x1057, L"Motorola"},
 {0x1058, L"Electronics and Telecommunications Research"},
 {0x1059, L"Teknor Microsystems"},
 {0x105A, L"Promise Technology"},
 {0x105B, L"Foxconn International"},
 {0x105C, L"Wipro Infotech Ltd."},
 {0x105D, L"Number 9 Computer Company"},
 {0x105E, L"VTech Engineering Canada, Ltd."},
 {0x105F, L"Infotronic America, Inc."},
 {0x1060, L"United Microelectronics (UMC)"},
 {0x1061, L"8x8 (X Tech)"},
 {0x1062, L"Maspar Computer Copr."},
 {0x1063, L"Ocean Office Automation"},
 {0x1064, L"Alcatel Cit"},
 {0x1065, L"Texas Microsystems"},
 {0x1066, L"PicoPower Technology"},
 {0x1067, L"Mitsubishi Electronics"},
 {0x1068, L"Diversified Technology"},
 {0x1069, L"Mylex Corporation"},
 {0x106A, L"Aten Research"},
 {0x106B, L"Apple Computer"},
 {0x106C, L"Hyundai Electronics America"},
 {0x106D, L"Sequent"},
 {0x106E, L"DFI Inc."},
 {0x106F, L"City Gate Development, Ltd."},
 {0x1070, L"Daewoo Telecom Ltd."},
 {0x1071, L"Mitac"},
 {0x1072, L"GIT Co., Ltd."},
 {0x1073, L"Yamaha Corporation"},
 {0x1074, L"NexGen Microsystems"},
 {0x1075, L"Advanced Integration Research"},
 {0x1076, L"Chaintech Computer Co. Ltd."},
 {0x1077, L"Q Logic"},
 {0x1078, L"Cyrix Corporation"},
 {0x1079, L"I-Bus"},
 {0x107A, L"Networth"},
 {0x107B, L"Gateway 2000"},
 {0x107C, L"Goldstar Co. Ltd."},
 {0x107D, L"Leadtek Research"},
 {0x107E, L"Interphase Corporation"},
 {0x107F, L"Data Technology Corporation (DTC)"},
 {0x1080, L"Contaq Microsystems"},
 {0x1081, L"Supermac Technology"},
 {0x1082, L"EFA Corporation of America"},
 {0x1083, L"Forex Computer Corporation"},
 {0x1084, L"Parador"},
 {0x1085, L"Tulip Computers Int'l BV"},
 {0x1086, L"J. Bond Computer Systems"},
 {0x1087, L"Cache Computer"},
 {0x1088, L"Microcomputer Systems (M) Son"},
 {0x1089, L"Data General Corporation"},
 {0x108A, L"Bit3 Computer"},
 {0x108C, L"Elonex PLC (Oakleigh Systems, Inc.)"},
 {0x108D, L"Olicom"},
 {0x108E, L"Sun Microsystems"},
 {0x108F, L"Systemsoft Corporation"},
 {0x1090, L"Encore Computer Corporation"},
 {0x1091, L"Intergraph Corporation"},
 {0x1092, L"Diamond Computer Systems"},
 {0x1093, L"National Instruments"},
 {0x1094, L"First International Computers (FIC)"},
 {0x1095, L"CMD Technology, Inc."},
 {0x1096, L"Alacron"},
 {0x1097, L"Appian Technology"},
 {0x1098, L"Vision / Quantum Designs Ltd"},
 {0x1099, L"Samsung Electronics Co. Ltd."},
 {0x109A, L"Packard Bell"},
 {0x109B, L"Gemlight Computer Ltd."},
 {0x109C, L"Megachips Corporation"},
 {0x109D, L"Zida Technologies"},
 {0x109E, L"Brooktree Corporation"},
 {0x109F, L"Trigem Computer Inc."},
 {0x10A0, L"Meidensha Corporation"},
 {0x10A1, L"Juko Electronics Inc. Ltd."},
 {0x10A2, L"Quantum Corporation"},
 {0x10A3, L"Everex Systems Inc."},
 {0x10A4, L"Globe Manufacturing Sales"},
 {0x10A5, L"Racal Interlan"},
 {0x10A6, L"Informtech Industrial Ltd."},
 {0x10A7, L"Benchmarq Microelectronics"},
 {0x10A8, L"Sierra Semiconductor"},
 {0x10A9, L"Silicon Graphics"},
 {0x10AA, L"ACC Microelectronics"},
 {0x10AB, L"Digicom"},
 {0x10AC, L"Honeywell IASD"},
 {0x10AD, L"Symphony Labs"},
 {0x10AE, L"Cornerstone Technology"},
 {0x10AF, L"Microcomputer Systems"},
 {0x10B0, L"CardExpert Technology"},
 {0x10B1, L"Cabletron Systems, Inc."},
 {0x10B2, L"Raytheon Company"},
 {0x10B3, L"Databook Inc."},
 {0x10B4, L"STB Systems"},
 {0x10B5, L"PLX Technology"},
 {0x10B6, L"Madge Networks"},
 {0x10B7, L"3com Corporation"},
 {0x10B8, L"Standard Microsystems Corporation (SMC)"},
 {0x10B9, L"Acer Labs Inc."},
 {0x10BA, L"Mitsubishi Electronics Corp."},
 {0x10BB, L"Dapha Electronics Corporation"},
 {0x10BC, L"Advanced Logic Research Inc. (ALR)"},
 {0x10BD, L"Surecom Technology"},
 {0x10BE, L"Tseng Labs International Corp."},
 {0x10BF, L"Most Inc."},
 {0x10C0, L"Boca Research Inc."},
 {0x10C1, L"ICM Corp. Ltd."},
 {0x10C2, L"Auspex Systems Inc."},
 {0x10C3, L"Samsung Semiconductors"},
 {0x10C4, L"Award Software International Inc."},
 {0x10C5, L"Xerox Corporation"},
 {0x10C6, L"Rambus Inc."},
 {0x10C7, L"Media Vision"},
 {0x10C8, L"Neomagic Corporation"},
 {0x10C9, L"DataExpert Corporation"},
 {0x10CA, L"Fujitsu"},
 {0x10CB, L"Omron Corporation"},
 {0x10CC, L"Mentor Arc Inc."},
 {0x10CD, L"Advanced System Products"},
 {0x10CE, L"Radius Inc."},
 {0x10CF, L"Citicorp TTI"},
 {0x10D0, L"Fujitsu Limited"},
 {0x10D1, L"Future+ Systems"},
 {0x10D2, L"Molex Incorporated"},
 {0x10D3, L"Jabil Circuit Inc."},
 {0x10D4, L"Hualon Microelectronics"},
 {0x10D5, L"Autologic Inc."},
 {0x10D6, L"Cetia"},
 {0x10D7, L"BCM Advanced Research"},
 {0x10D8, L"Advanced Peripherals Labs"},
 {0x10D9, L"Macronix International Co. Ltd"},
 {0x10DA, L"Thomas-Conrad Corporation"},
 {0x10DB, L"Rohm Research"},
 {0x10DC, L"CERN/ECP/EDU"},
 {0x10DD, L"Evans & Sutherland"},
 {0x10DE, L"NVIDIA Corporation"},
 {0x10DF, L"Emulex Corporation"},
 {0x10E0, L"Integrated Micro Solutions (IMS)"},
 {0x10E1, L"TekRAM Technology Corporation Ltd."},
 {0x10E2, L"Aptix Corporation"},
 {0x10E3, L"Newbridge Microsystems"},
 {0x10E4, L"Tandem Computers"},
 {0x10E5, L"Micro Industries"},
 {0x10E6, L"Gainbery Computer Products Inc."},
 {0x10E7, L"Vadem"},
 {0x10E8, L"Applied Micro Circuits Corp."},
 {0x10E9, L"Alps Electronic Corp. Ltd."},
 {0x10EA, L"Integraphics Systems"},
 {0x10EB, L"Artist Graphics"},
 {0x10EC, L"Realtek Semiconductor"},
 {0x10ED, L"ASCII Corporation"},
 {0x10EE, L"Xilinx Corporation"},
 {0x10EF, L"Racore Computer Products"},
 {0x10F0, L"Peritek Corporation"},
 {0x10F1, L"Tyan Computer"},
 {0x10F2, L"Achme Computer Inc."},
 {0x10F3, L"Alaris Inc."},
 {0x10F4, L"S-MOS Systems"},
 {0x10F5, L"NKK Corporation"},
 {0x10F6, L"Creative Electronic Systems SA"},
 {0x10F7, L"Matsushita Electric Industrial Corp. Ltd."},
 {0x10F8, L"Altos India Ltd."},
 {0x10F9, L"PC Direct"},
 {0x10FA, L"Truevision"},
 {0x10FB, L"Thesys Ges. f?r Microelektronik mbH"},
 {0x10FC, L"I/O Data Device Inc."},
 {0x10FD, L"Soyo Technology Corp. Ltd."},
 {0x10FE, L"Fast Electronic GmbH"},
 {0x10FF, L"N-Cube"},
 {0x1100, L"Jazz Multimedia"},
 {0x1101, L"Initio Corporation"},
 {0x1102, L"Creative Labs"},
 {0x1103, L"Triones Technologies Inc."},
 {0x1104, L"Rasterops"},
 {0x1105, L"Sigma Designs, Inc."},
 {0x1106, L"VIA Technologies"},
 {0x1107, L"Stratus Computer"},
 {0x1108, L"Proteon Inc."},
 {0x1109, L"Cogent Data Technologies"},
 {0x110A, L"Siemens AG / Siemens Nixdorf AG"},
 {0x110B, L"Xenon Microsystems / Chromatic Research, Inc."},
 {0x110C, L"Mini-Max Technology Inc."},
 {0x110D, L"ZNyX Corporation"},
 {0x110E, L"CPU Technology"},
 {0x110F, L"Ross Technology"},
 {0x1110, L"Powerhouse Systems"},
 {0x1111, L"Santa Cruz Operation (SCO)"},
 {0x1112, L"Rockwell / RNS division of Meret Communications Inc."},
 {0x1113, L"Accton Technology Corporation"},
 {0x1114, L"Atmel Corporation"},
 {0x1115, L"DuPont Pixel Systems"},
 {0x1116, L"Data Translation / Media 100, Inc."},
 {0x1117, L"Datacube Inc."},
 {0x1118, L"Berg Electronics"},
 {0x1119, L"Vortex Computersysteme GmbH"},
 {0x111A, L"Efficient Networks, Inc."},
 {0x111B, L"Teledyne Electronic Systems"},
 {0x111C, L"Tricord Systems, Inc."},
 {0x111D, L"Integrated Device Technology"},
 {0x111E, L"Eldec Corporation"},
 {0x111F, L"Precision Digital Images"},
 {0x1120, L"EMC Corporation"},
 {0x1121, L"Zilog"},
 {0x1122, L"Multi-tech Systems, Inc."},
 {0x1123, L"Excellent Design, Inc."},
 {0x1124, L"Leutron Vision AG"},
 {0x1125, L"Eurocore"},
 {0x1126, L"Vigra"},
 {0x1127, L"FORE Systems"},
 {0x1128, L"???"},
 {0x1129, L"Firmworks"},
 {0x112A, L"Hermes Electronics Co."},
 {0x112B, L"Linotype - Hell AG"},
 {0x112D, L"Ravicad"},
 {0x112E, L"Infomedia MicroElectronics Inc"},
 {0x112F, L"Imaging Technology"},
 {0x1130, L"Computervision"},
 {0x1131, L"Philips Semiconductors"},
 {0x1132, L"Mitel Corp"},
 {0x1133, L"Eicon Technology Corporation"},
 {0x1134, L"Mercury Computer Systems Inc"},
 {0x1135, L"Fuji Xerox Co Ltd"},
 {0x1136, L"Momentum Data Systems"},
 {0x1137, L"Cisco Systems Inc"},
 {0x1138, L"Ziatech Corporation"},
 {0x1139, L"Dynamic Pictures Inc"},
 {0x113A, L"FWB Inc"},
 {0x113C, L"Cyclone Microsystems (PLX)"},
 {0x113D, L"Leading Edge Products Inc"},
 {0x113E, L"Sanyo Electric Co. - Computer Engineering Dept."},
 {0x113F, L"Equinox Systems"},
 {0x1140, L"Intervoice Inc"},
 {0x1141, L"Crest Microsystem Inc"},
 {0x1142, L"Alliance Semiconductor Corp"},
 {0x1143, L"Netpower, Inc."},
 {0x1144, L"Cincinnati Milacron / Vickers Inc. Electronic Systems"},
 {0x1145, L"Workbit Corp"},
 {0x1146, L"Force Computers"},
 {0x1147, L"Interface Corp."},
 {0x1148, L"Schneider & Koch Co. / Syskonnect"},
 {0x1149, L"Win System Corporation"},
 {0x114A, L"VMIC"},
 {0x114B, L"Canopus Co."},
 {0x114C, L"Annabooks"},
 {0x114D, L"IC Corporation"},
 {0x114E, L"Nikon Systems Inc"},
 {0x114F, L"Digi International / Stargate"},
 {0x1150, L"Thinking Machines Corp."},
 {0x1151, L"JAE Electronics Inc."},
 {0x1152, L"Megatek"},
 {0x1153, L"Land Win Electronic Corp."},
 {0x1154, L"Melco Inc."},
 {0x1155, L"Pine Technology Ltd."},
 {0x1156, L"Periscope Engineering"},
 {0x1157, L"Avsys Corporation"},
 {0x1158, L"Voarx R&ampD Inc."},
 {0x1159, L"MuTech"},
 {0x115A, L"Harleguin Ltd."},
 {0x115B, L"Parallax Graphics"},
 {0x115C, L"Photron, Ltd."},
 {0x115D, L"Xircom"},
 {0x115E, L"Peer Protocols Inc."},
 {0x1160, L"Megasoft Inc."},
 {0x1161, L"PFU Ltd."},
 {0x1162, L"OA Laboratory Co Ltd."},
 {0x1163, L"Creative Labs / Rendition"},
 {0x1164, L"Advanced Peripherals Tech"},
 {0x1165, L"Imagraph Corporation"},
 {0x1166, L"Pequr Technology Inc. / Relience Computer"},
 {0x1167, L"Mutoh Industries, Inc."},
 {0x1168, L"Thine Electronics Inc"},
 {0x1169, L"Centre for Development of Advanced Computing"},
 {0x116A, L"Polaris Communications"},
 {0x116B, L"Connectware Inc"},
 {0x116F, L"Workstation Technology"},
 {0x1170, L"Inventec Corporation"},
 {0x1171, L"Loughborough Sound Images"},
 {0x1172, L"Altera Corporation"},
 {0x1173, L"Adobe Systems"},
 {0x1174, L"Bridgeport Machines"},
 {0x1175, L"Mitron Computer Inc."},
 {0x1176, L"SBE"},
 {0x1177, L"Silicon Engineering"},
 {0x1178, L"Alfa Inc"},
 {0x1179, L"Toshiba America Info Systems"},
 {0x117A, L"A-Trend Technology"},
 {0x117B, L"LG Electronics Inc."},
 {0x117C, L"Atto Technology"},
 {0x117E, L"T/R Systems"},
 {0x1180, L"Ricoh Co Ltd"},
 {0x1181, L"Telmatics International"},
 {0x1183, L"Fujikura Ltd"},
 {0x1184, L"Forks Inc"},
 {0x1185, L"Dataworld"},
 {0x1186, L"D-Link System Inc"},
 {0x1187, L"Advanced Technology Laboratories"},
 {0x1188, L"Shima Seiki Manufacturing Ltd."},
 {0x1189, L"Matsushita Electronics"},
 {0x118A, L"Hilevel Technology"},
 {0x118C, L"Corollary Inc."},
 {0x118D, L"BitFlow Inc. L"},
 {0x118E, L"Hermstedt GmbH"},
 {0x1191, L"Artop Electric / Acard Technology Corp. L"},
 {0x1192, L"Densan Co. Ltd"},
 {0x1193, L"Zeitnet Inc."},
 {0x1194, L"Toucan Technology"},
 {0x1195, L"Ratoc System Inc."},
 {0x1196, L"Hytec Electronics Ltd"},
 {0x1197, L"Gage Applied Sciences Inc."},
 {0x1198, L"Lambda Systems Inc."},
 {0x1199, L"Digital Communications Associates Inc,"},
 {0x119A, L"Mind Share Inc."},
 {0x119B, L"Omega Micro Inc."},
 {0x119C, L"Information Technology Inst."},
 {0x119D, L"Bug Sapporo Japan"},
 {0x119E, L"Fujitsu"},
 {0x119F, L"Bull Hn Information Systems"},
 {0x11A0, L"Convex Computer Corporation"},
 {0x11A1, L"Hamamatsu Photonics K.K."},
 {0x11A2, L"Sierra Research and Technology"},
 {0x11A3, L"Deuretzbacher GmbH & Co. Eng. KG"},
 {0x11A4, L"Barco"},
 {0x11A5, L"MicroUnity Systems Engineering, Inc."},
 {0x11A6, L"Pure Data"},
 {0x11A7, L"Power Computing Corp."},
 {0x11A9, L"InnoSys Inc."},
 {0x11AA, L"Actel"},
 {0x11AB, L"Galileo Technology Ltd."},
 {0x11AC, L"Canon Information Systems"},
 {0x11AD, L"Lite-On Communications Inc."},
 {0x11AE, L"Scitex Corporation Ltd."},
 {0x11AF, L"Pro-Log Corporation / Avid Technology Corp."},
 {0x11B0, L"V3 Semiconductor Inc."},
 {0x11B1, L"Apricot Computers"},
 {0x11B2, L"Eastman Kodak"},
 {0x11B3, L"Barr Systems Inc."},
 {0x11B4, L"Leitch Technology International"},
 {0x11B5, L"Radstone Technology Plc"},
 {0x11B6, L"United Video Corp"},
 {0x11B7, L"Motorola"},
 {0x11B8, L"Xpoint Technologies Inc."},
 {0x11B9, L"Pathlight Technology Inc."},
 {0x11BA, L"Videotron Corp"},
 {0x11BB, L"Pyramid Technology"},
 {0x11BC, L"Network Peripherals Inc."},
 {0x11BD, L"Pinnacle Systems Inc."},
 {0x11BE, L"International Microcircuits Inc."},
 {0x11BF, L"Astrodesign, Inc."},
 {0x11C3, L"NEC Corporation"},
 {0x11C4, L"Document Technologies Ind."},
 {0x11C5, L"Shiva Corporatin"},
 {0x11C6, L"Dainippon Screen Mfg. Co., Ltd."},
 {0x11C7, L"D.C.M. Data Systems"},
 {0x11C8, L"Dolphin Interconnect Solutions"},
 {0x11C9, L"MAGMA"},
 {0x11CA, L"LSI Systems Inc."},
 {0x11CB, L"Specialix International, Ltd."},
 {0x11CC, L"Michels & Kleberhoff Computer GmbH"},
 {0x11CD, L"HAL Computer Systems Inc."},
 {0x11CE, L"Netaccess"},
 {0x11D0, L"Lockheed Martin Federal Systems-Manassas"},
 {0x11D2, L"Intercom, Inc."},
 {0x11D4, L"Analog Devices"},
 {0x11D5, L"Ikon Corp."},
 {0x11D9, L"TEC Corp."},
 {0x11DA, L"Novell"},
 {0x11DB, L"Sega Enterprises, Ltd."},
 {0x11DE, L"Zoran Corporation"},
 {0x11DF, L"New Wave PDG"},
 {0x11E1, L"GEC Plessey Semi Inc."},
 {0x11E2, L"Samsung Information Systems Americ"},
 {0x11E3, L"Quicklogic Corporation"},
 {0x11E4, L"Second Wave Inc."},
 {0x11E5, L"IIX Consulting"},
 {0x11E6, L"Mitsui-Zosen System Research"},
 {0x11E8, L"Digital Processing Systems Inc."},
 {0x11EA, L"Elsag Bailey"},
 {0x11EB, L"Formation Inc."},
 {0x11EC, L"Coreco Inc."},
 {0x11ED, L"Mediamatics"},
 {0x11EE, L"Dome Imaging Systems Inc."},
 {0x11EF, L"Nicolet Technologies B.V."},
 {0x11F0, L"Compu-Shack GmbH"},
 {0x11F1, L"Symbios Logic Inc."},
 {0x11F2, L"Picture Tel Japan K.K."},
 {0x11F3, L"Keithley Metrabyte"},
 {0x11F4, L"Kinetic Systems Corporation"},
 {0x11F5, L"Computing Devices International"},
 {0x11F6, L"Powermatic Data Systems Ltd."},
 {0x11F6, L"Compex USA, Inc."},
 {0x11F7, L"Scientific Atlanta"},
 {0x11F8, L"PMC-Sierra Inc."},
 {0x11F9, L"I-Cube, Inc."},
 {0x1201, L"Vista Controls Corp."},
 {0x1203, L"Bayer Corp., AGFA division"},
 {0x1204, L"Lattice Semiconductor Corp."},
 {0x1205, L"Array Corp."},
 {0x1206, L"Amdahl Corp."},
 {0x120E, L"Cyclades"},
 {0x1216, L"PURUP Eskofot A/S"},
 {0x1217, L"O2Micro, Inc."},
 {0x121A, L"3DFX Interactive, Inc."},
 {0x121B, L"Advanced Telecomm Modules"},
 {0x1220, L"Ariel Corporation"},
 {0x1221, L"Contec Co., Ltd."},
 {0x1222, L"Ancor Communications, Inc."},
 {0x1223, L"Heurikon/Computer Products"},
 {0x1224, L"Interactive Images"},
 {0x1225, L"Power I/O, Inc."},
 {0x1227, L"Tech-Source"},
 {0x1228, L"Norsk Elektro Optikk A/S"},
 {0x1229, L"Data Kinesis Inc."},
 {0x122A, L"Integrated Telecom"},
 {0x122B, L"LG Industrial Systems Co. Ltd."},
 {0x122C, L"Sican GmbH"},
 {0x122D, L"Aztech Systems Ltd"},
 {0x122E, L"Xyratex"},
 {0x122F, L"Andrew Corporation"},
 {0x1230, L"Fishcamp Engineering"},
 {0x1231, L"Woodward McCoach, Inc."},
 {0x1232, L"GPT Limited"},
 {0x1233, L"Bus-Tech, Inc."},
 {0x1234, L"Technical Corp."},
 {0x1235, L"Risq Modular Systems, Inc. / Smart Modular Technologies, Inc."},
 {0x1236, L"Sigma Designs Corporation"},
 {0x1237, L"Alta Technology Corporation"},
 {0x1238, L"Adtran"},
 {0x1239, L"The 3DO Company"},
 {0x123A, L"Visicom Laboratories, Inc."},
 {0x123B, L"Seeq Technology, Inc."},
 {0x123C, L"Century Systems, Inc."},
 {0x123D, L"Engineering Design Team, Inc."},
 {0x123E, L"Sumutech, Inc."},
 {0x123F, L"C-Cube Microsystems"},
 {0x1240, L"Marathon Technologies Corp."},
 {0x1241, L"DSC Communications"},
 {0x1243, L"Delphax"},
 {0x1244, L"AVM Audiovisuelles Mktg & Computer GmbH"},
 {0x1245, L"A.P.D., S.A."},
 {0x1246, L"Dipix Technologies, Inc."},
 {0x1247, L"Xylon Research, Inc."},
 {0x1248, L"Central Data Corporation"},
 {0x1249, L"Samsung Electronics Co., Ltd."},
 {0x124A, L"AEG Electrocom GmbH"},
 {0x124B, L"SBS/Greenspring Modular I/O"},
 {0x124C, L"Solitron Technologies, Inc."},
 {0x124D, L"Stallion Technologies"},
 {0x124E, L"Cylink"},
 {0x124F, L"Infortrend Technology, Inc."},
 {0x1250, L"Hitachi Microcomputer System, Ltd."},
 {0x1251, L"VLSI Solution Oy"},
 {0x1253, L"Guzik Technical Enterprises"},
 {0x1254, L"Linear Systems Ltd."},
 {0x1255, L"Optibase Ltd."},
 {0x1256, L"Perceptive Solutions, Inc."},
 {0x1257, L"Vertex Networks, Inc."},
 {0x1258, L"Gilbarco, Inc."},
 {0x1259, L"Allied telesyn International"},
 {0x125A, L"ABB Power Systems"},
 {0x125B, L"Asix Electronics Corporation"},
 {0x125C, L"Aurora Technologies, Inc."},
 {0x125D, L"ESS Technology"},
 {0x125E, L"SpecialVideo Engineering SRL"},
 {0x125F, L"Concurrent Technologies, Inc."},
 {0x1260, L"Harris Semiconductor"},
 {0x1261, L"Matsushita-Kotobuki Electronics Industries"},
 {0x1262, L"ES Computer Company, Ltd."},
 {0x1263, L"Sonic Solutions"},
 {0x1264, L"Aval Nagasaki Corporation"},
 {0x1265, L"Casio Computer Co., Ltd."},
 {0x1266, L"Microdyne Corporation"},
 {0x1267, L"S.A. Telecommunications"},
 {0x1268, L"Tektronix"},
 {0x1269, L"Thomson-CSF/TTM"},
 {0x126A, L"Lexmark International, Inc."},
 {0x126B, L"Adax, Inc."},
 {0x126C, L"Northern Telecom"},
 {0x126D, L"Splash Technology, Inc."},
 {0x126E, L"Sumitomo Metal Industries, Ltd."},
 {0x126F, L"Silicon Motion, Inc."},
 {0x1270, L"Olympus Optical Co., Ltd."},
 {0x1271, L"GW Instruments"},
 {0x1272, L"Telematics International"},
 {0x1273, L"Hughes Network Systems"},
 {0x1274, L"Ensoniq"},
 {0x1275, L"Network Appliance Corporation"},
 {0x1276, L"Switched Network Tecnologies, Inc."},
 {0x1277, L"Comstream"},
 {0x1278, L"Transtech Parallel Systems Ltd."},
 {0x1279, L"Transmeta Corporation"},
 {0x127A, L"Rockwell Semiconductor Systems"},
 {0x127B, L"Pixera Corporation"},
 {0x127C, L"Crosspoint Solutions, Inc."},
 {0x127D, L"Vela Research"},
 {0x127E, L"Winnov, L.P."},
 {0x127F, L"Fujifilm"},
 {0x1280, L"Photoscript Group Ltd."},
 {0x1281, L"Yokogawa Electric Corporation"},
 {0x1282, L"Davicom Semiconductor, Inc."},
 {0x1283, L"Integrated Technology Express, Inc."},
 {0x1284, L"Sahara Networks, Inc."},
 {0x1285, L"Platform Technologies, Inc."},
 {0x1286, L"Mazet GmbH"},
 {0x1287, L"M-Pact, Inc. / Luxsonor, Inc."},
 {0x1288, L"Timestep Corporation"},
 {0x1289, L"AVC Technology, Inc."},
 {0x128A, L"Asante Technologies, Inc."},
 {0x128B, L"Transwitch Corporation"},
 {0x128C, L"Retix Corporation / Sonoma Systems, Inc."},
 {0x128D, L"G2 Networks, Inc."},
 {0x128C, L"Retix Corp"},
 {0x128D, L"???"},
 {0x128E, L"Samho Multi Tech Ltd. / Hoon Tech Co., Ltd."},
 {0x128F, L"Tateno Dennou, Inc."},
 {0x1290, L"Sord Computer Corporation"},
 {0x1291, L"NCS Computer Italia"},
 {0x1292, L"Tritech Microelectronics, Inc."},
 {0x1293, L"Media Reality Technology"},
 {0x1294, L"Rhetorex, Inc."},
 {0x1295, L"Imagenation Corporation"},
 {0x1296, L"Kofax Image Products"},
 {0x1297, L"Holco Ent Co, Ltd / Shuttle Computer"},
 {0x1298, L"Spellcaster Telecommunications Inc."},
 {0x1299, L"Knowledge Technology Lab."},
 {0x129A, L"VMetro, Inc."},
 {0x129B, L"Image Access"},
 {0x129C, L"Jaycor / Xantel Corporation"},
 {0x129D, L"Compcore Multimedia, Inc."},
 {0x129E, L"Victor Company of Japan, Ltd."},
 {0x129F, L"OEC Medical Systems, Inc."},
 {0x12A0, L"Allen-Bradley Company"},
 {0x12A1, L"Simpact Associates, Inc."},
 {0x12A2, L"Newgen Systems Corporation"},
 {0x12A3, L"Lucent Technologies"},
 {0x12A4, L"NTT Electronics Technology Company"},
 {0x12A5, L"Vision Dynamics Ltd."},
 {0x12A6, L"Scalable Networks, Inc."},
 {0x12A7, L"AMO GmbH"},
 {0x12A8, L"News Datacom"},
 {0x12A9, L"Xiotech Corporation"},
 {0x12AA, L"SDL Communications, Inc."},
 {0x12AB, L"Yuan Yuan Enterprise Co., Ltd."},
 {0x12AC, L"MeasureX Corporation"},
 {0x12AD, L"Multidata GmbH"},
 {0x12AE, L"Alteon Networks, inc."},
 {0x12AF, L"TDK USA Corporation"},
 {0x12B0, L"Jorge Scientific Corporation"},
 {0x12B1, L"GammaLink"},
 {0x12B2, L"General Signal Networks"},
 {0x12B3, L"Inter-Face Co. Ltd."},
 {0x12B4, L"FutureTel Inc."},
 {0x12B5, L"Granite Systems Inc."},
 {0x12B6, L"Natural Microsystems"},
 {0x12B7, L"Acumen"},
 {0x12B8, L"Korg"},
 {0x12B9, L"US Robotics / 3com Corporation"},
 {0x12BA, L"PMC Sierra"},
 {0x12BB, L"Nippon Unisoft Corporation"},
 {0x12BC, L"Array Microsystems"},
 {0x12BD, L"Computerm Corp."},
 {0x12BE, L"Anchor Chips"},
 {0x12BF, L"Fujifilm Microdevices"},
 {0x12C0, L"InfiMed"},
 {0x12C1, L"GMM Research Corp."},
 {0x12C2, L"Mentec Limited"},
 {0x12C3, L"Holtek Microelectronics Inc."},
 {0x12C4, L"Connect Tech Inc."},
 {0x12C5, L"Picture Elements, Inc."},
 {0x12C6, L"Mitani Corporation"},
 {0x12C7, L"Dialogic Corporation"},
 {0x12C8, L"G Force Co, Ltd."},
 {0x12C9, L"Gigi Operations"},
 {0x12CA, L"Integrated Computing Engines"},
 {0x12CB, L"Antex Electronics Corporation"},
 {0x12CC, L"Pluto Technologies International"},
 {0x12CD, L"Aims Lab"},
 {0x12CE, L"Netspeed, Inc."},
 {0x12CF, L"Prophet Systems, Inc."},
 {0x12D0, L"GDE Systems, Inc."},
 {0x12D1, L"Psitech"},
 {0x12D2, L"NVIDIA / SGS Thomson"},
 {0x12D3, L"Vingmed Sound A/S"},
 {0x12D4, L"DGM&ampS"},
 {0x12D5, L"Equator Technologies"},
 {0x12D6, L"Analogic Corporation"},
 {0x12D7, L"Biotronic SRL"},
 {0x12D8, L"Pericom Semiconductor"},
 {0x12D9, L"Aculab PLC"},
 {0x12DA, L"True Time"},
 {0x12DB, L"Annapolis Micro Systems, Inc."},
 {0x12DC, L"Symicron Computer Communication Ltd."},
 {0x12DD, L"Management Graphics"},
 {0x12DE, L"Rainbow Technologies"},
 {0x12DF, L"SBS Technologies Inc."},
 {0x12E0, L"Chase Research"},
 {0x12E1, L"Nintendo Co, Ltd."},
 {0x12E2, L"Datum Inc, Bancomm-Timing Division"},
 {0x12E3, L"Imation Corp - Medical Imaging Systems"},
 {0x12E4, L"Brooktrout Technology Inc."},
 {0x12E5, L"Apex Inc / XCD Inc."},
 {0x12E6, L"Cirel Systems"},
 {0x12E7, L"Sunsgroup Corporation / Sebring Systems"},
 {0x12E8, L"CRISC Corporation"},
 {0x12E9, L"GE Spacenet"},
 {0x12EA, L"Zuken / Real Vision, Inc."},
 {0x12EB, L"Aureal Semiconductor"},
 {0x12EC, L"3A International, Inc."},
 {0x12ED, L"Optivision Inc."},
 {0x12EE, L"Orange Micro"},
 {0x12EF, L"Vienna Systems"},
 {0x12F0, L"Pentek"},
 {0x12F1, L"Sorenson Vision Inc."},
 {0x12F2, L"GammaGraphx, Inc."},
 {0x12F3, L"XING, Inc."},
 {0x12F4, L"Megatel"},
 {0x12F5, L"Forks"},
 {0x12F6, L"Dawson France"},
 {0x12F7, L"Cognex"},
 {0x12F8, L"Electronic-Design GmbH"},
 {0x12F9, L"FourFold Technologies"},
 {0x12FB, L"Spectrum Signal Processing"},
 {0x12FC, L"Capital Equipment Corp."},
 {0x12FD, L"i2S"},
 {0x12FE, L"ESD Electronic System Design GmbH"},
 {0x12FF, L"Lexicon"},
 {0x1300, L"Harman International Industries, Inc."},
 {0x1302, L"Computer Sciences Corp."},
 {0x1303, L"Innovative Integration"},
 {0x1304, L"Juniper Networks"},
 {0x1305, L"NetPhone, Inc."},
 {0x1306, L"Duet Technologies"},
 {0x1307, L"Computer Boards"},
 {0x1308, L"Jato Technologies, Inc."},
 {0x1309, L"AB Semicon, Ltd."},
 {0x130A, L"Mitsubishi Electric MicroComputer"},
 {0x130B, L"Colorgraphic Communications Corp."},
 {0x130C, L"AMBEX Technologies, Inc."},
 {0x130D, L"Accelerix, Inc."},
 {0x130E, L"Yamatake-Honeywell Co., Ltd."},
 {0x130F, L"Advanet, Inc."},
 {0x1310, L"GESPAC"},
 {0x1311, L"VideoServer, Inc."},
 {0x1312, L"Acuity Imaging, Inc."},
 {0x1313, L"Yaskawa Electric Co."},
 {0x1316, L"Teradyne, Inc."},
 {0x1317, L"Bridgecom, Inc."},
 {0x1318, L"Packet Engines, Inc."},
 {0x1319, L"ForteMedia, Inc."},
 {0x131A, L"Finisar Corp."},
 {0x131C, L"Nippon Electro-Sensory Devices Corp."},
 {0x131D, L"Sysmic, Inc."},
 {0x131E, L"Xinex Networks, Inc."},
 {0x131F, L"SIIG, Inc."},
 {0x1320, L"Crypto AG"},
 {0x1321, L"Arcobel Graphics BV"},
 {0x1322, L"MTT Co., Ltd."},
 {0x1323, L"DOME, Inc."},
 {0x1324, L"Sphere Communications"},
 {0x1325, L"Salix Technologies, Inc."},
 {0x1326, L"SeaChange International"},
 {0x1327, L"Voss Scientific"},
 {0x1328, L"Quadrant International"},
 {0x1329, L"Productivity Enhancement"},
 {0x132A, L"Microcom, Inc."},
 {0x132B, L"BroadBand Technologies"},
 {0x132C, L"Micrel, Inc."},
 {0x132D, L"Integrated Silicon Solution, Inc."},
 {0x1330, L"MMC Networks"},
 {0x1331, L"RadiSys Corporation"},
 {0x1332, L"Micro Memory"},
 {0x1333, L"???"},
 {0x1334, L"Redcreek Communications, Inc."},
 {0x1335, L"Videomail, Inc."},
 {0x1336, L"???"},
 {0x1337, L"Third Planet Publishing"},
 {0x1338, L"BT Electronics"},
 {0x133A, L"VTEL Corp."},
 {0x133B, L"Softcom Microsystems"},
 {0x133C, L"Holontech Corp."},
 {0x133D, L"S S Technologies"},
 {0x133E, L"Virtual Computer Corp."},
 {0x133F, L"SCM Microsystems"},
 {0x1340, L"Atalla Corp."},
 {0x1341, L"Kyoto Microcomputer Co."},
 {0x1342, L"Promax Systems Inc."},
 {0x1343, L"Phylon Communications, Inc."},
 {0x1344, L"Crucial Technology"},
 {0x1345, L"Arescom, Inc."},
 {0x1346, L"???"},
 {0x1347, L"Odetics"},
 {0x1348, L"???"},
 {0x1349, L"Sumitomo Electric Industries, Ltd."},
 {0x134A, L"DTC Technology Corp."},
 {0x134B, L"Ark Research Corp."},
 {0x134C, L"Chori Joho System Co., Ltd."},
 {0x134D, L"Pctel, Inc."},
 {0x134E, L"CSTI"},
 {0x134F, L"Algo System Co., Ltd."},
 {0x1350, L"Systec Co., Ltd."},
 {0x1351, L"Sonix, Inc."},
 {0x1353, L"Dassault A.T."},
 {0x1354, L"dWave System, Inc."},
 {0x1355, L"Kratos Analytical, Ltd."},
 {0x1356, L"The Logical Co."},
 {0x1359, L"Prisa Networks"},
 {0x135A, L"Brain Boxes"},
 {0x135B, L"Giganet, Inc."},
 {0x135C, L"Quatech, Inc."},
 {0x135D, L"ABB Network Partner AB"},
 {0x135E, L"Sealevel Systems, Inc."},
 {0x135F, L"I-Data International A-S"},
 {0x1360, L"Meinberg Funkuhren"},
 {0x1361, L"Soliton Systems K.K."},
 {0x1362, L"Fujifacom Corp."},
 {0x1363, L"Phoenix Technology, Ltd."},
 {0x1364, L"ATM Communications, Inc."},
 {0x1365, L"Hypercope Corp."},
 {0x1366, L"Teijin Seiki Co., Ltd."},
 {0x1367, L"Hitachi Zosen Corp."},
 {0x1368, L"Skyware Corp."},
 {0x1369, L"Digigram"},
 {0x136A, L"High Soft Tech"},
 {0x136B, L"Kawasaki Steel Corp."},
 {0x136C, L"Adtek System Science Co., Ltd."},
 {0x136D, L"Gigalabs, Ltd."},
 {0x136F, L"Applied Magic, Inc."},
 {0x1370, L"ATL Products"},
 {0x1371, L"CNET Technology, Inc."},
 {0x1373, L"Silicon Vision, Inc."},
 {0x1374, L"Silicom, Ltd."},
 {0x1375, L"Argosystems, Inc."},
 {0x1376, L"LMC"},
 {0x1377, L"Electronic Equipment Production"},
 {0x1378, L"Telemann Co., Ltd."},
 {0x1379, L"Asahi Kasei Microsystems Co., Ltd."},
 {0x137A, L"Mark Of The Unicorn, Inc."},
 {0x137B, L"PPT Vision"},
 {0x137C, L"Iwatsu Electric Co., Ltd."},
 {0x137D, L"Dynachip Corp."},
 {0x137E, L"Patriot Scientific Corp."},
 {0x137F, L"Japan Satellite Systems, Inc."},
 {0x1380, L"Sanritz Automation Co., Ltd."},
 {0x1381, L"Brains Co., Ltd."},
 {0x1382, L"Marian - Electronic & Software"},
 {0x1383, L"Controlnet, Inc."},
 {0x1384, L"Reality Simulation Systems, Inc."},
 {0x1385, L"Netgear"},
 {0x1386, L"Video Domain Technologies"},
 {0x1387, L"Systran Corp."},
 {0x1388, L"Hitachi Information Technology Co., Ltd."},
 {0x1389, L"Applicom International"},
 {0x138A, L"Fusion Micromedia Corp."},
 {0x138B, L"Tokimec, Inc."},
 {0x138C, L"Silicon Reality"},
 {0x138D, L"Future Techno Designs Pte., Ltd."},
 {0x138E, L"Basler GmbH"},
 {0x138F, L"Patapsco Designs, Inc."},
 {0x1390, L"Concept Development, Inc."},
 {0x1391, L"Development Concepts, Inc."},
 {0x1392, L"Medialight, Inc."},
 {0x1394, L"Level One Communications"},
 {0x1395, L"Ambicom, Inc."},
 {0x1396, L"Cipher Systems, Inc."},
 {0x1397, L"Cologne Chip Designs GmbH"},
 {0x1398, L"Clarion Co., Ltd."},
 {0x1399, L"Rios Systems Co., Ltd."},
 {0x139A, L"Alacritech, Inc."},
 {0x139B, L"Mediasonic Multimedia Systems, Ltd."},
 {0x139C, L"Quantum 3D, Inc."},
 {0x139D, L"EPL, Ltd."},
 {0x139E, L"Media4"},
 {0x139F, L"Aethra S.R.L."},
 {0x13A0, L"Crystal Group, Inc."},
 {0x13A1, L"Kawasaki Heavy Industries, Ltd."},
 {0x13A2, L"Ositech Communications, Inc."},
 {0x13A3, L"HI-FN"},
 {0x13A4, L"Rascom, Inc."},
 {0x13A5, L"Audio Digital Imaging, Inc."},
 {0x13A6, L"Videonics, Inc."},
 {0x13A7, L"Teles AG"},
 {0x13A8, L"Exar Corp."},
 {0x13A9, L"Ultrasound Group"},
 {0x13AA, L"Broadband Networks, Inc."},
 {0x13AB, L"Arcom Control Systems, Ltd."},
 {0x13AC, L"Motion Media Technology, Ltd."},
 {0x13AD, L"Nexus, Inc."},
 {0x13AE, L"ALD Technology, Ltd."},
 {0x13AF, L"T.Sqware"},
 {0x13B0, L"Maxspeed Corp."},
 {0x13B1, L"Tamura Corp."},
 {0x13B2, L"Techno Chips Co., Ltd."},
 {0x13B3, L"Lanart Corp."},
 {0x13B4, L"Wellbean Co, Inc."},
 {0x13B5, L"ARM"},
 {0x13B6, L"DLoG GmbH"},
 {0x13B7, L"LOGIC Devices, Inc."},
 {0x13B8, L"Nokia Telecommunications Oy"},
 {0x13B9, L"Elecom Co., Ltd."},
 {0x13BA, L"Oxford Instruments"},
 {0x13BB, L"Sanyo Technosound Co., Ltd."},
 {0x13BC, L"Bitran Corp."},
 {0x13BD, L"Sharp Corp."},
 {0x13BE, L"Miroku Jyoho Service Co., Ltd."},
 {0x13BF, L"Sharewave., Inc."},
 {0x13C0, L"Microgate Corp."},
 {0x13C1, L"3ware Inc."},
 {0x13C2, L"Technotrend Systemtechnik GmbH"},
 {0x13C3, L"Janz Computer AG"},
 {0x13C4, L"Phase Metrics"},
 {0x13C5, L"Alphi Technology Corp."},
 {0x13C6, L"Condor Engineering, Inc."},
 {0x13C7, L"Blue Chip Technology, Ltd."},
 {0x13C8, L"Apptech, Inc."},
 {0x13C9, L"Eaton Corp."},
 {0x13CA, L"IOMEGA Corp."},
 {0x13CB, L"Yano Electric Co., Ltd."},
 {0x13CC, L"Metheus Corp."},
 {0x13CD, L"Compatible Systems Corp."},
 {0x13CE, L"Cocom A/S"},
 {0x13CF, L"Studio Audio & Video, Ltd."},
 {0x13D0, L"Techsan Electronics Co., Ltd."},
 {0x13D1, L"Abocom Systems, Inc."},
 {0x13D2, L"Shark Multimedia, Inc."},
 {0x13D3, L"IMC Networks"},
 {0x13D4, L"Graphics Microsystems, Inc."},
 {0x13D5, L"Media 100, Inc."},
 {0x13D6, L"K.I. Technology Co., Inc."},
 {0x13D7, L"Toshiba Engineering Corp."},
 {0x13D8, L"Phobos Corp."},
 {0x13D9, L"Apex PC Solutions, Inc."},
 {0x13DA, L"Intresource Systems Pte., Ltd."},
 {0x13DB, L"Janich & Klass Computertechnik GmbH"},
 {0x13DC, L"Netboost Corp."},
 {0x13DD, L"Multimedia Bundle, Inc."},
 {0x13DE, L"ABB Robotics Products AB"},
 {0x13DF, L"E-Tech, Inc."},
 {0x13E0, L"GVC Corp."},
 {0x13E1, L"Silicom Multimedia Systems, Inc."},
 {0x13E2, L"Dynamics Research Corp."},
 {0x13E3, L"Nest, Inc."},
 {0x13E4, L"Calculex, Inc."},
 {0x13E5, L"Telesoft Design, Ltd."},
 {0x13E6, L"Argosy Research, Inc."},
 {0x13E7, L"NAC, Inc."},
 {0x13E8, L"Chip Express Corp."},
 {0x13E9, L"Intraserver Technology, Inc."},
 {0x13EA, L"Dallas Semiconductor"},
 {0x13EB, L"Hauppauge Computer Works, Inc."},
 {0x13EC, L"Zydacron, Inc."},
 {0x13ED, L"Raytheion E-Systems"},
 {0x13EE, L"Hayes Microcomputer Products, Inc."},
 {0x13F0, L"Sundance Technology, Inc."},
 {0x13F1, L"Oce' - Technologies B.V."},
 {0x13F2, L"Ford Microelectronics, Inc."},
 {0x13F3, L"McData Corp."},
 {0x13F4, L"Troika Design, Inc."},
 {0x13F5, L"Kansai Electric Co., Ltd."},
 {0x13F6, L"C-Media Electronics, Inc."},
 {0x13F7, L"Wildfire Communications"},
 {0x13F8, L"Ad Lib Multimedia, Inc."},
 {0x13F9, L"NTT Advanced Technology Corp."},
 {0x13FA, L"Pentland Systems, Ltd."},
 {0x13FB, L"Aydin Corp."},
 {0x13FC, L"Computer Peripherals International"},
 {0x13FD, L"Micro Science, Inc."},
 {0x13FE, L"Advantech Co., Ltd."},
 {0x13FF, L"Silicon Spice, Inc."},
 {0x1400, L"ARTX, Inc."},
 {0x1401, L"CR-Systems A/S"},
 {0x1402, L"Meilhaus Electronic GmbH"},
 {0x1403, L"Ascor, Inc."},
 {0x1404, L"Fundamental Software, Inc."},
 {0x1405, L"Excalibur Systems, Inc."},
 {0x1406, L"Oce' Printing Systems GmbH"},
 {0x1407, L"Lava Computer Mfg., Inc."},
 {0x1408, L"Aloka Co., Ltd."},
 {0x1409, L"Timedia Technology Co., Ltd."},
 {0x140A, L"DSP Research, Inc."},
 {0x140B, L"Ramix, Inc."},
 {0x140C, L"Elmic Systems, Inc."},
 {0x140D, L"Matsushita Electrics Works, Ltd."},
 {0x140E, L"Goepel Electronic GmbH"},
 {0x140F, L"Salient Systems Corp."},
 {0x1410, L"Midas Lab, Inc."},
 {0x1411, L"Ikos Systems, Inc."},
 {0x1412, L"IC Ensemble, Inc."},
 {0x1413, L"Addonics"},
 {0x1414, L"Microsoft"},
 {0x1415, L"Oxford Semiconductor, Ltd."},
 {0x1416, L"Multiwave Innovation Pte, Ltd."},
 {0x1417, L"Convergenet Technologies, Inc."},
 {0x1418, L"Kyushu Electronics Systems, Inc."},
 {0x1419, L"Excel Switching Corp."},
 {0x141A, L"Apache Micro Peripherals, Inc."},
 {0x141B, L"Zoom Telephonics, Inc."},
 {0x141D, L"Digitan Systems, Inc."},
 {0x141E, L"Fanuc, Ltd."},
 {0x141F, L"Visiontech, Ltd."},
 {0x1420, L"Psion Dacom PLC"},
 {0x1421, L"ADS Technologies, Inc."},
 {0x1422, L"Ygrec Systems Co., Ltd."},
 {0x1423, L"Custom Technology Corp."},
 {0x1424, L"Vidoeserver Connections"},
 {0x1425, L"ASIC Designers, Inc."},
 {0x1426, L"Storage Technology Corp."},
 {0x1427, L"Better On-line Solutions"},
 {0x1428, L"EDEC Co., Ltd."},
 {0x1429, L"UNEX Technology Corp."},
 {0x142A, L"Kingmax Technology, Inc."},
 {0x142B, L"RadioLAN"},
 {0x142C, L"Minton Optic Industry Co., Ltd."},
 {0x142D, L"Pix Stream, Inc."},
 {0x142E, L"Vitec Multimedia"},
 {0x142F, L"Radicom Research, Inc."},
 {0x1430, L"ITT Aerospace/Communications Division"},
 {0x1431, L"Gilat Satellite Networks"},
 {0x1432, L"Edimax Computer Co."},
 {0x1433, L"Eltec Elektronik GmbH"},
 {0x1435, L"Real Time Devices US, Inc."},
 {0x1436, L"CIS Technology, Inc."},
 {0x1437, L"Nissin Co Inc"},
 {0x1438, L"Atmel-Dream"},
 {0x1439, L"Outsource Engineering & Mfg. Inc"},
 {0x143A, L"Stargate Solutions Inc"},
 {0x143B, L"Canon Research Center, America"},
 {0x143C, L"Amlogic Inc"},
 {0x143D, L"Tamarack Microelectronics Inc"},
 {0x143F, L"Lightwell Co Ltd - Zax Division"},
 {0x1440, L"Algol Corp"},
 {0x1441, L"AGIE LTD"},
 {0x1442, L"Phoenix Contact Co GmbH"},
 {0x1443, L"Unibrain S.A."},
 {0x1444, L"TRW"},
 {0x1445, L"Logical do Ltd"},
 {0x1447, L"AIM GmbH"},
 {0x1448, L"Alesis Studio"},
 {0x1449, L"TUT Systems Inc"},
 {0x144A, L"Adlink Technology"},
 {0x144B, L"Loronix Information Systems Inc"},
 {0x144C, L"Catalina Research Inc"},
 {0x144E, L"Olitec"},
 {0x144F, L"Askey Computer Corp"},
 {0x1450, L"Nexus Systems Inc"},
 {0x1451, L"SP3D Chip Design GmbH"},
 {0x1453, L"Mycom Inc"},
 {0x1454, L"Altiga Networks"},
 {0x1455, L"Logic Plus Plus Inc"},
 {0x1456, L"Advanced Hardware"},
 {0x1457, L"Nuera Communications Inc"},
 {0x1458, L"Giga-Byte Technology"},
 {0x1459, L"Dooin Electronics"},
 {0x145A, L"Escalate Networks Inc"},
 {0x145B, L"Praim SRL"},
 {0x145C, L"Cryptek"},
 {0x145D, L"Gallant Computer Inc"},
 {0x145E, L"Aashima Technology B.V."},
 {0x145F, L"Baldor Electric Company"},
 {0x1460, L"Dynarc Inc"},
 {0x1461, L"Avermedia Technologies Inc"},
 {0x1462, L"Micro-Star International Co Ltd"},
 {0x1463, L"Fast Corp"},
 {0x1464, L"Interactive Circuits & Systems Ltd"},
 {0x1465, L"GN Nettest Telecom Div."},
 {0x1466, L"Designpro Inc"},
 {0x1467, L"Digicom SPA"},
 {0x1468, L"Ambit microsystem Corp"},
 {0x1469, L"Cleveland Motion Controls"},
 {0x146A, L"IFR Ltd"},
 {0x146B, L"Parascan Technologies Ltd"},
 {0x146C, L"Ruby Tech Corp"},
 {0x146D, L"Tachyon Inc"},
 {0x146E, L"Williams Electronic Games Inc"},
 {0x146F, L"Multi Dimensional Consulting Inc"},
 {0x1470, L"Bay Networks"},
 {0x1471, L"Integrated Telecom Express Inc"},
 {0x1472, L"Daikin Indistries Ltd"},
 {0x1473, L"Zapex Technologies Inc"},
 {0x1474, L"Doug Carson & Associates"},
 {0x1475, L"Picazo Communications"},
 {0x1476, L"Mortara Instrument Inc"},
 {0x1477, L"Net Insight"},
 {0x1478, L"Diatrend Corp"},
 {0x1479, L"Toray Industries Inc"},
 {0x147A, L"Formosa Industrial Computing"},
 {0x147B, L"Abit Computer Corp"},
 {0x147C, L"Aware Inc"},
 {0x147D, L"Interworks Computer Products"},
 {0x147E, L"Matsushita Graphic Communication Systems Inc"},
 {0x147F, L"Nihon Unisys Ltd"},
 {0x1480, L"SCII Telecom"},
 {0x1481, L"Biopac Systems Inc"},
 {0x1482, L"ISYTEC"},
 {0x1483, L"Labway Corp"},
 {0x1668, L"Action Tec Electronics, Inc."},
 {0x1A03, L"ASPEED Technology Inc."},
 {0x1A08, L"Sierra Semiconductor"},
 {0x1B13, L"Jaton Corp."},
 {0x1C1C, L"Symphony"},
 {0x1D44, L"DPT"},
 {0x1DE1, L"TekRAM"},
 {0x21C3, L"21st Century Computer Corp."},
 {0x2348, L"Racore"},
 {0x270B, L"Xantel Corp."},
 {0x270F, L"Chaintech Computer Co., Ltd."},
 {0x3000, L"Hansol Electronics Inc."},
 {0x3142, L"Post Impression Systems"},
 {0x3388, L"Hint Corp."},
 {0x3D3D, L"3DLabs"},
 {0x4005, L"Avance Logic, Inc."},
 {0x4444, L"Internext Compression, Inc."},
 {0x4468, L"BRIDGEPORT MACHINES"},
 {0x4594, L"Cogetec Informatique Inc."},
 {0x4680, L"UMAX Computer Corp."},
 {0x4843, L"Hercules Computer Technology, Inc."},
 {0x4942, L"???"},
 {0x4943, L"Growth Networks"},
 {0x4978, L"Axil Computer, Inc."},
 {0x4A14, L"NetVin"},
 {0x4B10, L"Buslogic Inc."},
 {0x4C48, L"Lung Hwa Electronics"},
 {0x4D51, L"Mediaq Inc"},
 {0x4DDC, L"ILC data Device Corp."},
 {0x5053, L"Voyetra Technologies"},
 {0x5143, L"Qualcomm, Inc."},
 {0x5333, L"S3"},
 {0x5455, L"Technische Universit?t Berlin"},
 {0x5519, L"Cnet Technologies, Inc."},
 {0x5555, L"Genroco Inc"},
 {0x5700, L"Netpower"},
 {0x6356, L"UltraStor"},
 {0x6374, L"c't Magazin fuer Computertechnik"},
 {0x6409, L"Logitec Corp"},
 {0x6666, L"Decision Computer International Co."},
 {0x7604, L"O.N. Electric Co Ltd"},
 {0x8008, L"Quancom Electronic GmbH L"},
 {0x8086, L"Intel"},
 {0x8800, L"Trigem Computer L"},
 {0x8866, L"T-Square Design Inc"},
 {0x8888, L"Silicon Magic"},
 {0x8E0E, L"Computone Corporation"},
 {0x8E2E, L"KTI"},
 {0x9004, L"Adaptec"},
 {0x9005, L"Adaptec"},
 {0x907F, L"Atronics"},
 {0x9412, L"Holtek"},
 {0xA200, L"NEC Corp."},
 {0xA259, L"Hewlett Packard"},
 {0xA25B, L"Hewlett Packard GmbH PL24-MKT"},
 {0xA304, L"Sony"},
 {0xA727, L"3com Corp."},
 {0xAA42, L"Scitex Digital Video"},
 {0xB1B3, L"Shiva Europe, Ltd."},
 {0xC001, L"TSI Telsys"},
 {0xC0A9, L"Micron/Crucial Technology"},
 {0xC0DE, L"Motorola"},
 {0xC0FE, L"Motion Engineering, Inc."},
 {0xCAFE, L"Chrysalis-ITS"},
 {0xD4D4, L"DY4 Systems Inc."},
 {0xE159, L"Tiger Jet Network Inc."},
 {0xE000, L"Winbond"},
 {0xE159, L"Tiger Jet Network Inc."},
 {0xECC0, L"Echo Corp."},
 {0xEDD8, L"Ark Logic Inc."},
 {0xFEDA, L"Epigram Inc."},
};

//Use this value for loop control during searching:
#define PCI_VENTABLE_LEN (sizeof(PciVenTable) / sizeof(PCI_VENTABLE))

#endif


PciClassInfo.h
#ifndef _PCI_CLASS_INFO_H_
#define _PCI_CLASS_INFO_H_

typedef struct _PCI_CLASSCODETABLE
{
 UINT8   BaseClass;
 UINT8   SubClass;
 UINT8  ProgIf;
 UINT16  *BaseDesc;
 UINT16  *SubDesc;
 UINT16  *ProgDesc;
}PCI_CLASSCODETABLE, *PPCI_CLASSCODETABLE;

PCI_CLASSCODETABLE PciClassCodeTable [] =
{
 { 0x00, 0x00, 0x00, L"Pre-2.0 PCI", L"Non-VGA",L"" } ,
 { 0x00, 0x01, 0x00, L"Pre-2.0 PCI", L"VGA Compatible", L"" } ,

 { 0x01, 0x00, 0x00, L"Mass Storage", L"SCSI", L"" } ,
 { 0x01, 0x01, 0x00, L"Mass Storage", L"IDE", L"" } ,
 { 0x01, 0x02, 0x00, L"Mass Storage", L"Floppy", L"" } ,
 { 0x01, 0x03, 0x00, L"Mass Storage", L"IPI", L"" } ,
 { 0x01, 0x04, 0x00, L"Mass Storage", L"RAID", L"" } ,
 { 0x01, 0x05, 0x20, L"Mass Storage", L"ATA controller with single DMA", L"" } , 
 { 0x01, 0x05, 0x30, L"Mass Storage", L"ATA controller with chained DMA", L"" } ,
 { 0x01, 0x06, 0x00, L"Mass Storage", L"Vendor specific", L"" } ,
 { 0x01, 0x06, 0x01, L"Mass Storage", L"AHCI 1.0", L"" } ,
 { 0x01, 0x07, 0x00, L"Mass Storage", L"Serial Attached SCSI", L"" } ,
 { 0x01, 0x08, 0x00, L"Mass Storage", L"NVM", L"" } ,
 { 0x01, 0x80, 0x00, L"Mass Storage", L"Other", L"" } ,

 { 0x02, 0x00, 0x00, L"Network Controller", L"Ethernet", L"" } ,
 { 0x02, 0x01, 0x00, L"Network Controller", L"Token Ring", L"" } ,
 { 0x02, 0x02, 0x00, L"Network Controller", L"FDDI", L"" } ,
 { 0x02, 0x03, 0x00, L"Network Controller", L"ATM", L"" } ,
 { 0x02, 0x04, 0x00, L"Network Controller", L"ISDN", L"" } ,
 { 0x02, 0x05, 0x00, L"Network Controller", L"WorldFip", L"" } ,
 { 0x02, 0x06, 0x00, L"Network Controller", L"PICMG 2.14 Nulti Computing", L"" } ,
 { 0x02, 0x80, 0x00, L"Network Controller", L"Other", L"" } ,

 { 0x03, 0x00, 0x00, L"Display Controller", L"PC Compatible", L"VGA" } ,
 { 0x03, 0x00, 0x01, L"Display Controller", L"PC Compatible", L"8514" } ,
 { 0x03, 0x01, 0x00, L"Display Controller", L"XGA", L"" } ,
 { 0x03, 0x02, 0x00, L"Display Controller", L"3D Controller", L"" } ,
 { 0x03, 0x80, 0x00, L"Display Controller", L"Other", L"" } ,

 { 0x04, 0x00, 0x00, L"Multimedia Device", L"Video", L"" } ,
 { 0x04, 0x01, 0x00, L"Multimedia Device", L"Audio", L"" } ,
 { 0x04, 0x02, 0x00, L"Multimedia Device", L"Computer Telephony Device", L"" } ,
 { 0x04, 0x03, 0x00, L"Multimedia Device", L"Audio Device", L"" } ,
 { 0x04, 0x80, 0x00, L"Multimedia Device", L"Other", L"" } ,

 { 0x05, 0x00, 0x00, L"Memory Controller", L"RAM", L"" } ,
 { 0x05, 0x01, 0x00, L"Memory Controller", L"Flash", L"" } ,
 { 0x05, 0x80, 0x00, L"Memory Controller", L"Other", L"" } ,

 { 0x06, 0x00, 0x00, L"Bridge Device", L"Host Bridge", L"" } ,
 { 0x06, 0x01, 0x00, L"Bridge Device", L"ISA Bridge", L"" } ,
 { 0x06, 0x02, 0x00, L"Bridge Device", L"EISA Bridge", L"" } ,
 { 0x06, 0x03, 0x00, L"Bridge Device", L"MCA Bridge", L"" } ,
 { 0x06, 0x04, 0x00, L"Bridge Device", L"PCI-to-PCI Bridge", L"" } ,
 { 0x06, 0x04, 0x01, L"Bridge Device", L"PCI-to-PCI Bridge", L"Subtractive Decode" } ,
 { 0x06, 0x05, 0x00, L"Bridge Device", L"PCMCIA Bridge", L"" } ,
 { 0x06, 0x06, 0x00, L"Bridge Device", L"NuBus Bridge", L"" } ,
 { 0x06, 0x07, 0x00, L"Bridge Device", L"CardBus Bridge", L"" } ,
 { 0x06, 0x08, 0x00, L"Bridge Device", L"RACEway Bridge", L"" } ,
 { 0x06, 0x09, 0x40, L"Bridge Device", L"PCI-to-PCI Bridge", L"Primary" } ,
 { 0x06, 0x09, 0x80, L"Bridge Device", L"PCI-to-PCI Bridge", L"Secondary" } ,
 { 0x06, 0x0A, 0x00, L"Bridge Device", L"InfiniBrand-to-PCI Host Bridge", L"" } ,
 { 0x06, 0x80, 0x00, L"Bridge Device", L"Other", L"" } ,

 { 0x07, 0x00, 0x00, L"Simple Communications", L"Serial", L"Generic XT Compatible" } ,
 { 0x07, 0x00, 0x01, L"Simple Communications", L"Serial", L"16450 Compatible" } ,
 { 0x07, 0x00, 0x02, L"Simple Communications", L"Serial", L"16550 Compatible" } ,
 { 0x07, 0x00, 0x03, L"Simple Communications", L"Serial", L"16650 Compatible" } ,
 { 0x07, 0x00, 0x04, L"Simple Communications", L"Serial", L"16750 Compatible" } ,
 { 0x07, 0x00, 0x05, L"Simple Communications", L"Serial", L"16850 Compatible" } ,
 { 0x07, 0x00, 0x06, L"Simple Communications", L"Serial", L"16950 Compatible" } ,
 { 0x07, 0x01, 0x00, L"Simple Communications", L"Parallel", L"Standard" } ,
 { 0x07, 0x01, 0x01, L"Simple Communications", L"Parallel", L"Bi-Directional" } ,
 { 0x07, 0x01, 0x02, L"Simple Communications", L"Parallel", L"ECP 1.X Compliant" } ,
 { 0x07, 0x01, 0x03, L"Simple Communications", L"Parallel", L"IEEE 1284 Controller" } ,
 { 0x07, 0x01, 0xFE, L"Simple Communications", L"Parallel", L"IEEE 1284 Target Device" } ,
 { 0x07, 0x02, 0x00, L"Simple Communications", L"Multiport Serial Controller", L"" } ,
 { 0x07, 0x03, 0x00, L"Simple Communications", L"Generic Modem", L"" } ,
 { 0x07, 0x03, 0x01, L"Simple Communications", L"Hayes Compatible Modem", L"16450 Compatible" } ,
 { 0x07, 0x03, 0x02, L"Simple Communications", L"Hayes Compatible Modem", L"16550 Compatible" } ,
 { 0x07, 0x03, 0x03, L"Simple Communications", L"Hayes Compatible Modem", L"16650 Compatible" } ,
 { 0x07, 0x03, 0x04, L"Simple Communications", L"Hayes Compatible Modem", L"16750 Compatible" } ,
 { 0x07, 0x04, 0x00, L"Simple Communications", L"IEEE 488.1/2 (GPIB)", L"" } ,
 { 0x07, 0x05, 0x00, L"Simple Communications", L"Smart Card", L"" } ,
 { 0x07, 0x80, 0x02, L"Simple Communications", L"Other", L"" } ,

 { 0x08, 0x00, 0x00, L"Base Systems Peripheral", L"PIC (Programmable Interrupt Controller)", L"Generic 8259" } ,
 { 0x08, 0x00, 0x01, L"Base Systems Peripheral", L"PIC (Programmable Interrupt Controller)", L"ISA" } ,
 { 0x08, 0x00, 0x02, L"Base Systems Peripheral", L"PIC (Programmable Interrupt Controller)", L"PCI" } ,
 { 0x08, 0x00, 0x10, L"Base Systems Peripheral", L"I/O APIC Interrupt Controller", L"" } ,
 { 0x08, 0x00, 0x20, L"Base Systems Peripheral", L"I/O(x) APIC Interrupt Controller", L"" } ,
 { 0x08, 0x01, 0x00, L"Base Systems Peripheral", L"DMA (Direct Memory Access)", L"Generic 8259" } ,
 { 0x08, 0x01, 0x01, L"Base Systems Peripheral", L"DMA (Direct Memory Access)", L"ISA" } ,
 { 0x08, 0x01, 0x02, L"Base Systems Peripheral", L"DMA (Direct Memory Access)", L"EISA" } ,
 { 0x08, 0x02, 0x00, L"Base Systems Peripheral", L"System Timer", L"Generic 8259" } ,
 { 0x08, 0x02, 0x01, L"Base Systems Peripheral", L"System Timer", L"ISA" } ,
 { 0x08, 0x02, 0x02, L"Base Systems Peripheral", L"System Timer", L"EISA" } ,
 { 0x08, 0x03, 0x00, L"Base Systems Peripheral", L"RTC (Real Time Clock)", L"Generic" } ,
 { 0x08, 0x03, 0x01, L"Base Systems Peripheral", L"RTC (Real Time Clock)", L"ISA" } ,
 { 0x08, 0x04, 0x00, L"Base Systems Peripheral", L"Generic PCI Hot-Plug Controller", L"" } ,
 { 0x08, 0x05, 0x00, L"Base Systems Peripheral", L"SD Host Controller", L"" } ,
 { 0x08, 0x06, 0x00, L"Base Systems Peripheral", L"IOMMU", L"" } ,
 { 0x08, 0x80, 0x00, L"Base Systems Peripheral", L"Other", L"" } ,

 { 0x09, 0x00, 0x00, L"Input Device", L"Keyboard", L"" } ,
 { 0x09, 0x01, 0x00, L"Input Device", L"Digitizer (Pen)", L"" } ,
 { 0x09, 0x02, 0x00, L"Input Device", L"Mouse", L"" } ,
 { 0x09, 0x03, 0x00, L"Input Device", L"Scanner", L"" } ,
 { 0x09, 0x04, 0x00, L"Input Device", L"Gameport", L"Generic" } ,
 { 0x09, 0x04, 0x01, L"Input Device", L"Gameport", L"Legacy" } ,
 { 0x09, 0x80, 0x00, L"Input Device", L"Other", L"" } ,

 { 0x0A, 0x00, 0x00, L"Docking Station", L"Generic", L"" } ,
 { 0x0A, 0x80, 0x00, L"Docking Station", L"Other", L"" } ,

 { 0x0B, 0x00, 0x00, L"Processor", L"i386", L"" } ,
 { 0x0B, 0x01, 0x00, L"Processor", L"i486", L"" } ,
 { 0x0B, 0x02, 0x00, L"Processor", L"Pentium", L"" } ,
 { 0x0B, 0x10, 0x00, L"Processor", L"Alpha", L"" } ,
 { 0x0B, 0x20, 0x00, L"Processor", L"Power PC", L"" } ,
 { 0x0B, 0x30, 0x00, L"Processor", L"MIPS", L"" } ,
 { 0x0B, 0x40, 0x00, L"Processor", L"Co-processor", L"" } ,

 { 0x0C, 0x00, 0x00, L"Serial Bus", L"Firewire (IEEE 1394)", L"Generic" } ,
 { 0x0C, 0x00, 0x10, L"Serial Bus", L"Firewire (IEEE 1394)", L"OHCI" } ,
 { 0x0C, 0x01, 0x00, L"Serial Bus", L"ACCESS.bus", L"" } ,
 { 0x0C, 0x02, 0x00, L"Serial Bus", L"SSA (Serial Storage Archetecture)", L"" } ,
 { 0x0C, 0x03, 0x00, L"Serial Bus", L"USB controller", L"UHCI" } ,
 { 0x0C, 0x03, 0x10, L"Serial Bus", L"USB controller", L"OHCI" } ,
 { 0x0C, 0x03, 0x20, L"Serial Bus", L"USB controller", L"EHCI" } ,
 { 0x0C, 0x03, 0x30, L"Serial Bus", L"USB controller", L"XHCI" } ,
 { 0x0C, 0x03, 0x30, L"Serial Bus", L"USB controller", L"Unspecified" } ,
 { 0x0C, 0x03, 0xFE, L"Serial Bus", L"USB controller", L"USB Device" } ,
 { 0x0C, 0x04, 0x00, L"Serial Bus", L"Fibre Channel", L"" } ,
 { 0x0C, 0x05, 0x00, L"Serial Bus", L"SMBus", L"" } ,
 { 0x0C, 0x06, 0x00, L"Serial Bus", L"InfiniBand", L"" } ,
 { 0x0C, 0x07, 0x00, L"Serial Bus", L"IPMI SMIC Interface", L"" } ,
 { 0x0C, 0x08, 0x00, L"Serial Bus", L"SERCOS Interface", L"" } ,
 { 0x0C, 0x09, 0x00, L"Serial Bus", L"CANBUS", L"" } ,

 { 0x0D, 0x00, 0x00, L"Wireless Controllers", L"iRDA Compatible Controller", L""},
 { 0x0D, 0x01, 0x00, L"Wireless Controllers", L"Consumer IR Controller", L""},
 { 0x0D, 0x10, 0x00, L"Wireless Controllers", L"RF Controller", L""},
 { 0x0D, 0x11, 0x00, L"Wireless Controllers", L"Bluetooth Controller", L""},
 { 0x0D, 0x12, 0x00, L"Wireless Controllers", L"Broadband Controller", L""},
 { 0x0D, 0x20, 0x00, L"Wireless Controllers", L"Ethernet Controller (802.11a)", L""},
 { 0x0D, 0x21, 0x00, L"Wireless Controllers", L"Ethernet Controller (802.11b)", L""},
 { 0x0D, 0x80, 0x00, L"Wireless Controllers", L"Other Wireless Controller", L""},

 { 0x0E, 0x00, 0x00, L"Intelligent I/O Controllers", L"I20 Architecture", L""},

 { 0x0F, 0x01, 0x00, L"Satellite Communication", L"TV Controller", L""},
 { 0x0F, 0x02, 0x00, L"Satellite Communication", L"Audio Controller", L""},
 { 0x0F, 0x03, 0x00, L"Satellite Communication", L"Video Controller", L""},
 { 0x0F, 0x04, 0x00, L"Satellite Communication", L"Data Controller", L""},

 { 0x10, 0x00, 0x00, L"Encryption/Decryption", L"Network and Computing Encrpytion/Decryption", L""},
 { 0x10, 0x10, 0x00, L"Encryption/Decryption", L"Entertainment Encrpytion/Decryption", L""},
 { 0x10, 0x80, 0x00, L"Encryption/Decryption", L"Other Encrpytion/Decryption", L""},

 { 0x11, 0x00, 0x00, L"Data Acquisition & Signal Processing", L"DPIO Modules", L""},
 { 0x11, 0x01, 0x00, L"Data Acquisition & Signal Processing", L"Performance Counters", L""},
 { 0x11, 0x10, 0x00, L"Data Acquisition & Signal Processing", L"Communications Syncrhonization", L""},
 { 0x11, 0x20, 0x00, L"Data Acquisition & Signal Processing", L"Signal processing Management", L""},
 { 0x11, 0x80, 0x00, L"Data Acquisition & Signal Processing", L"Signal Processing Controller", L""},

 { 0xFF, 0x00, 0x00, L"Unknown", L"Device Does Not Fit In Class Codes", L"UDF" } ,
};

// Use this value for loop control during searching:
#define PCI_CLASSCODETABLE_LEN  (sizeof(PciClassCodeTable) / sizeof(PCI_CLASSCODETABLE))

#endif


Execution result shows the vendor, vendor ID, device ID and device information:
Fig. 1. Result.


Note: I typed the LsPciDev.efi > LsPciDev.txt command under shell. Thus, I just open the LsPciDev.txt to show the result for you.

Reference:
1. PCI_Configuration_Space
2. UEFI Spec.

沒有留言:

張貼留言