|
Ok, thanks aasi. Until now we were using a barely modified version of sample code from cypress to register events. The original way:
[code]
PDEV_BROADCAST_HDR bcastHdr = (PDEV_BROADCAST_HDR) Message.LParam;
if (bcastHdr->dbch_devicetype == DBT_DEVTYP_HANDLE) {
PDEV_BROADCAST_HANDLE pDev = (PDEV_BROADCAST_HANDLE) Message.LParam;
if (pDev->dbch_handle == USBDevice->DeviceHandle())
USBDevice->Close();
}
}
[\code]
Seeing that we are not receiving always the DBT_DEVTYP_HANDLE, we changed to
[code]
PDEV_BROADCAST_HDR bcastHdr = (PDEV_BROADCAST_HDR) Message.LParam;
if (bcastHdr->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) {
PDEV_BROADCAST_HANDLE pDev = (PDEV_BROADCAST_HANDLE) Message.LParam;
GUID guidRemovedDevice;
CLSIDFromString(L"{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX}", &guidRemovedDevice);
if (pDev->dbcc_classguid == guidRemovedDevice)
USBDevice->Close();
}
}
[\code]
I will report you if it worked on all OS versions (Windows 7 32-64 bits, Win XP 32 bits).
|