Hi Jan,
Have a lot more information and a partial solution. After being plugged into the USB, our device does not respond to the first OUT packet requesting information from the device. The VB6 application does the following
1. FindTheHid which returns with valid handles
2. WriteFile with the request
3. ReadFile in attempt to get the response
4. WaitForSingleObject which times out
5. CancelIo(ReadHandle). which provides a message of “Overlapped I/O operation is in progress”
6. CloseHandle(ReadHandle)
7. CloseHandle((HIDHandle)
8. Sets MyDeviceDetected = False
After a delay
FindTheHid is used again and this time it returns with the invalid handle of -1 for both the ReadHandle and HIDHandle. At this point WriteFile does not output anything on the USB. Previously the only way to recover was to restart the application program. Now steps 5, 6, and 7 above are not done and a second WriteFile is done. This time the device responds with its IN packet and all is good.
We still need to find out why the device is not responding to the first request. However, if for whatever reason the device does not respond, it would be nice if there was a clean way to recover by canceling the operation and releasing handles.