beautypg.com

Rockwell Automation 2711P Software Development Kit User Manual User Manual

Page 94

background image

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);