阅读:990回复:0
USB驱动程序中接受到数据但应用程序接收的数据全部为零,问题在什么地方?高手帮忙看看
USB驱动程序中接受到数据但应用程序接收的数据全部为零,问题在什么地方?
实际情况如下: 有一设备通过USB与主机通信。在主机上有该设备的USB驱动程序和实际应用程序: 驱动程序: 驱动程序提供Read和Write函数接口,并有OnReadWriteComplete函数,该函数在读写操作完成后调用。 在主机应用程序: 通过CreateFile,ReadFile,WaitForMultipleObjects,GetOverlappedResult接收USB数据。 目前问题: 大部分时候USB通信正常,主机应用程序接受到的数据与OnReadWriteComplete中打印(调试状态打印)的数据一直,到那时有时候在OnReadWriteComplete打印出正常的数据(与设备端发送的数据完全一致),但是在主机应用程序中接收不到正确的数据,在GetOverlappedResult函数中返回了正确的数据长度,但是接受数据全部为零。 问题很奇怪,如果说是USB驱动的问题,但是绝大部分时候通信正常,而且在驱动程序中也接收到了正确的数据。如果是应用程序出了问题,但是 CreateFile,ReadFile,WaitForMultipleObjects,GetOverlappedResult 都是kernel32.dll中的函数,应该不会有问题。 而且我也不清楚如何进行调试这些函数? 那位大侠有不同的见解,有没有软件或者调试工具可以截取到驱动和应用程序之间的通信? 3x |
|