Rockwell Automation 2711P Software Development Kit User Manual User Manual
Page 95
![background image](/manuals/580240/95/background.png)
Publication 2711P-UM005A-EN-P - March 2007
Device Drivers 95
}
if (dwStatus == ERROR_SUCCESS)
{
pdii->cbSize = sizeof(*pdii);
dwStatus = DDKReg_GetIsrInfo(hkInstance, pdii);
}
RegCloseKey(hkInstance);
}
else
ERRORMSG(1,(_T("PciFindDevice: call to RegOpenKeyEx() failed! ")
_T("[0x%08x]\r\n"),GetLastError()));
// check the registry information
if (dwStatus == ERROR_SUCCESS)
{
if ((pdpi->dwWhichIds &
(PCIIDM_VENDORID | PCIIDM_DEVICEID)) !=
(PCIIDM_VENDORID | PCIIDM_DEVICEID))
{
ERRORMSG(1,(_T("PciFindDevice: Invalid dwWhichIds!\r\n")));
dwStatus = ERROR_INVALID_DATA;
}
else if(pdpi->idVals[PCIID_VENDORID] !=
VendorId || pdpi->idVals[PCIID_DEVICEID] != DeviceId)
{
ERRORMSG(1,(_T("PciFindDevice: Invalid VendorId!\r\n")));
dwStatus = ERROR_INVALID_DATA;
}
else if(pdwi->dwNumMemWindows < 2)
{
ERRORMSG(1,(_T("PciFindDevice: Invalid dwNumMemWindows!\r\n")));
dwStatus = ERROR_INVALID_DATA;
}
else if(pdii->dwSysintr ==
SYSINTR_NOP && pdii->dwIrq == IRQ_UNSPECIFIED)
{
ERRORMSG(1,(_T("PciFindDevice: Invalid dwSysintr AND dwIrq!\r\n")));
dwStatus = ERROR_INVALID_DATA;
}
}
//
// did we get everything we need?
//
if (dwStatus == ERROR_SUCCESS)
FnRetVal = TRUE;
DEBUGMSG(ZONE_FUNC, (TEXT("PciFindDevice-\r\n")));
return (FnRetVal);
}
#endif // defined(DRV_USE_PCI)
/////////////////////////////////////////////////////////////////////
//
// IstThreadProc()
//
// An example of a IST