home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2005 October / Gamestar_77_2005-10_dvd.iso / Utility / attsetup.exe / plugins / api / vc++ / example / pciinfo / pciinfo.cpp next >
C/C++ Source or Header  |  2004-09-01  |  5KB  |  174 lines

  1. // pciinfo.cpp : Defines the entry point for the DLL application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "resource.h"
  6. HINSTANCE hinstDLLl;
  7. lppatt_proc Main_Proc;
  8.  
  9. BOOL APIENTRY DllMain( HANDLE hModule, 
  10.                        DWORD  ul_reason_for_call, 
  11.                        LPVOID lpReserved
  12.                      )
  13. {
  14.     hinstDLLl=(HINSTANCE)hModule;
  15.     return TRUE;
  16. }
  17.  
  18.  
  19. void APIENTRY get_plug_info(PPlugInfo Data) {
  20.     strcpy(Data->Menu_Text,"PCI Info");
  21.     Data->PluginType=PL_STD;
  22.     Data->Sign=ATT_Sign;
  23. }
  24.  
  25. void CreateColumns(HWND list) {
  26. LV_COLUMN lvC;
  27. lvC.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
  28. lvC.fmt = LVCFMT_LEFT;
  29. lvC.cx = 75;
  30. lvC.pszText = "Bus";
  31. int index=0;
  32. ListView_InsertColumn(list,index,&lvC);
  33. lvC.pszText = "Device";index++;
  34. ListView_InsertColumn(list,index,&lvC);
  35. lvC.pszText = "Function";index++;
  36. ListView_InsertColumn(list,index,&lvC);
  37. lvC.pszText = "Vendor";index++;
  38. ListView_InsertColumn(list,index,&lvC);
  39. lvC.pszText = "Device ID";index++;
  40. ListView_InsertColumn(list,index,&lvC);
  41. lvC.cx = 220;
  42. lvC.pszText = "Description";index++;
  43. ListView_InsertColumn(list,index,&lvC);
  44.  
  45.  
  46. }
  47. BOOL CALLBACK MyDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
  48.     char bus=0;
  49.     char dev=0;
  50.     char fun=0;
  51.     int index=0;
  52.     TPCIIO pt;
  53.     DWORD res,data1,db1;
  54.     bool flag=true;
  55.     char text[255];
  56.     HWND hwndList = GetDlgItem(hwndDlg, IDC_LIST2); 
  57.     LV_ITEM lvI;
  58.     lvI.mask = LVIF_TEXT | LVIF_STATE;
  59.     lvI.state = 0;
  60.     lvI.stateMask = 0;
  61.     
  62.     lvI.iSubItem = 0;
  63.  
  64.     switch (uMsg) {
  65.         case WM_INITDIALOG:
  66.             //Collect PCI Devices
  67.             SendMessage(hwndList,LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_FULLROWSELECT );
  68.  
  69.             CreateColumns(hwndList);
  70.             while     (flag) {
  71.                 pt.bus=bus;
  72.                 pt.device=dev;
  73.                 pt.func=fun;
  74.                 pt.offset=0;
  75.                 Main_Proc(atc_getPCIBusDataW,&pt,&res);
  76.                 //res=res & 0x0000FFFF;
  77.                 if ((res!=0xFFFF) && (res!=0)){
  78.                     pt.offset=2;
  79.                     Main_Proc(atc_getPCIBusDataW,&pt,&data1);
  80.                     lvI.iItem = index;
  81.                     sprintf(text,"%02X",bus);// Dev#%d Fun#%d %4x:%4x",bus,dev,fun,res,&data1);
  82.                     lvI.pszText = text;
  83.                     ListView_InsertItem(hwndList, &lvI);
  84.                     sprintf(text,"%02X",dev);
  85.                     ListView_SetItemText(hwndList,index,1,text);
  86.                     sprintf(text,"%02X",fun);
  87.                     ListView_SetItemText(hwndList,index,2,text);
  88.                     sprintf(text,"%04X",res);
  89.                     ListView_SetItemText(hwndList,index,3,text);
  90.                     sprintf(text,"%04X",data1);
  91.                     ListView_SetItemText(hwndList,index,4,text);
  92.                     
  93.                     pt.offset=0xA; //device code and sub code
  94.                     Main_Proc(atc_getPCIBusDataW,&pt,&db1);         
  95.  
  96.                     switch (db1) {
  97.                         case 0x0101:strcpy(text,"IDE Controller");break;
  98.                         case 0x0104:strcpy(text,"RAID Controller");break;
  99.                         case 0x0100:strcpy(text,"SCSI Controller");break;
  100.                         case 0x0102:strcpy(text,"FD Controller");break;
  101.                         case 0x0103:strcpy(text,"IPI Controller");break;
  102.                         case 0x0180:strcpy(text,"Other storage controller");break;
  103.                         case 0x0200:strcpy(text,"Ethernet controller");break;
  104.                         case 0x0201:strcpy(text,"TL Controller");break;
  105.                         case 0x0202:strcpy(text,"DDI Controller");break;
  106.                         case 0x0203:strcpy(text,"ATM Controller");break;
  107.                         case 0x0280:strcpy(text,"DDI Controller");break;
  108.                         case 0x0300:strcpy(text,"VGA Adapter");break;
  109.                         case 0x0380:strcpy(text,"Other VGA Adapter");break;
  110.                         case 0x0400:strcpy(text,"Video controller");break;
  111.                         case 0x0401:strcpy(text,"Sound Controller");break;
  112.                         case 0x0480:strcpy(text,"Other Multimedia");break;
  113.                         case 0x0500:strcpy(text,"Ram");break;
  114.                         case 0x0580:strcpy(text,"Other memory");break;
  115.                         case 0x0600:strcpy(text,"Host Bridge Device");break;
  116.                         case 0x0601:strcpy(text,"ISA Bridge");break;
  117.                         case 0x0602:strcpy(text,"EISA Bridge");break;
  118.                         case 0x0603:strcpy(text,"Micro channel bridge");break;
  119.                         case 0x0604:strcpy(text,"PCI to PCI Bridge");break;
  120.                         case 0x0605:strcpy(text,"PCMCIA bridge");break;
  121.                         case 0x0606:strcpy(text,"NuBus bridge");break;
  122.                         case 0x0607:strcpy(text,"CardBus bridge");break;
  123.                         case 0x0680:strcpy(text,"Other bridge");break;
  124.                         case 0x0700:strcpy(text,"XT compatible");break;
  125.                         case 0x0701:strcpy(text,"Parallel");break;
  126.                         case 0x0980:strcpy(text,"Input Device");break;
  127.                         case 0x0C05:strcpy(text,"i2c/SMBus Serial Bus Controller");break;
  128.                         case 0x0C03:strcpy(text,"USB Controller");break;
  129.                         default:
  130.                         sprintf(text,"Unknown %4x",db1);
  131.                     }
  132.                     
  133.                     ListView_SetItemText(hwndList,index,5,text);
  134.                     index++;
  135.                 }
  136.                 fun++;
  137.                 if (fun<8) continue;
  138.  
  139.                 dev++;
  140.                 fun=0;
  141.                 if (dev<31) continue;
  142.  
  143.                 bus++;
  144.                 if (bus==8) break;
  145.                 fun=0;
  146.                 dev=0;
  147.                 
  148.             }
  149.             SetFocus(hwndList); 
  150.             return TRUE;
  151.             break;
  152.         case WM_CLOSE: 
  153.             EndDialog(hwndDlg,0);
  154.             break;
  155.         case WM_COMMAND: 
  156.             switch (LOWORD(wParam)) 
  157.             { 
  158.                 case IDOK: 
  159.                     EndDialog(hwndDlg,0);
  160.                 break; 
  161.         } 
  162.     }
  163.     return FALSE;
  164. }
  165.  
  166.  
  167. void APIENTRY exec_plugin (HWND Win_Handle, lppatt_proc ATT_Proc) {
  168.     //creating dialog box window
  169.     Main_Proc=ATT_Proc;
  170.     DialogBox(hinstDLLl,MAKEINTRESOURCE(IDD_DIALOG1),Win_Handle,MyDialogProc);
  171.  
  172. }
  173.  
  174.