//////////////////////////////////////////////////////////////////
// File - PCI_DUMP.C
//
// A utility for getting a dump of all the PCI configuration
// registers of the PCI cards installed.
//
//////////////////////////////////////////////////////////////////
#include <windows.h>
#include <winioctl.h>
#include "../../include/windrvr.h"
#include "../shared/pci_diag_lib.h"
#include <stdio.h>
int main (int argc, char *argv[])
{
HANDLE hWD;
char buf[256];
WORD *pVendorID = (WORD *) buf;
WORD *pDeviceID = (WORD *) (buf+2);
WD_PCI_CONFIG_DUMP pciCnf;
int g;
if (!PCI_Get_WD_handle(&hWD)) return 0;
BZERO(pciCnf);
pciCnf.pBuffer = buf;
pciCnf.dwOffset = 0;
pciCnf.dwBytes = 256;
pciCnf.fIsRead = TRUE;
printf ("pci bus scan (using WD_PciConfigDump)\n");
for (pciCnf.pciSlot.dwBus=0; pciCnf.pciSlot.dwBus<256; pciCnf.pciSlot.dwBus++)
{
for (pciCnf.pciSlot.dwSlot=0; pciCnf.pciSlot.dwSlot<32; pciCnf.pciSlot.dwSlot++)
{
for (pciCnf.pciSlot.dwFunction=0; pciCnf.pciSlot.dwFunction<8; pciCnf.pciSlot.dwFunction++)
{
*pDeviceID = 0xffff;
*pVendorID = 0xffff;
WD_PciConfigDump(hWD,&pciCnf);
if (*pDeviceID!=0xffff)
{
CHAR tmp[100];
printf("Bus %d Slot %d Function %d, VendorID %04x DeviceID %04x\n",
pciCnf.pciSlot.dwBus, pciCnf.pciSlot.dwSlot, pciCnf.pciSlot.dwFunction, *pVendorID, *pDeviceID);
for (g=0; g<256; g+=4)
{
if ((g/4) % 8 == 0) printf("%2x ",g);
printf ("%08x ",*((DWORD *) (buf+g)));
if ((g/4) % 8 == 7) printf("\n");
}
PCI_Print_card_info(pciCnf.pciSlot);
printf("Press Enter to continue to next slot\n");
gets (tmp);
}
}
}
}
WD_Close(hWD);
return 0;
}
このサイトでは、サイトや広告を改善するために Cookie を使用します。サイトを利用することで、Cookie の使用に同意するものといたします。詳細は
プライバシーについてをご覧ください。