beautypg.com

Rockwell Automation 2711P Software Development Kit User Manual User Manual

Page 95

background image

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