Rockwell Automation 2711P Software Development Kit User Manual User Manual
Page 94

Publication 2711P-UM005A-EN-P - March 2007
94 Device Drivers
pDrvData->hEvent = INVALID_HANDLE_VALUE;
}
//
// release the allocated global memory
//
if (NULL != pDrvData)
{
LocalFree((HLOCAL)pDrvData);
pDrvData = INVALID_HANDLE_VALUE;
}
DEBUGMSG(ZONE_FUNC,(_T("DRV_Deinit-\r\n")));
return (TRUE);
}
#if defined(DRV_USE_PCI)
/////////////////////////////////////////////////////////////////////
//
// PciFindDevice()
//
// Groups the DDK calls to simplify the interface
//
/////////////////////////////////////////////////////////////////////
BOOL
PciFindDevice(
LPCTSTR szBaseInstance,
USHORT VendorId,
USHORT DeviceId,
PDDKWINDOWINFO pdwi,
PDDKISRINFO pdii,
PDDKPCIINFO pdpi
)
{
BOOL FnRetVal = FALSE; // Return value for this function.
HKEY hkInstance;
DWORD dwStatus;
DEBUGMSG(ZONE_FUNC, (TEXT("PciFindDevice+\r\n")));
/////////////////////////////////////////////////////////
//
// read the registry to get our PCI instance information
//
//////////////////////////////////////////////////////////
dwStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szBaseInstance,
0, 0, &hkInstance);
if (dwStatus == ERROR_SUCCESS)
{
pdwi->cbSize = sizeof(*pdwi);
dwStatus = DDKReg_GetWindowInfo(hkInstance, pdwi);
if (dwStatus == ERROR_SUCCESS)
{
pdpi->cbSize = sizeof(*pdpi);
dwStatus = DDKReg_GetPciInfo(hkInstance, pdpi);