masterhxm
驱动牛犊
驱动牛犊
  • 注册日期2009-05-26
  • 最后登录2009-05-27
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:990回复:0

USB驱动程序中接受到数据但应用程序接收的数据全部为零,问题在什么地方?高手帮忙看看

楼主#
更多 发布于:2009-05-26 11:02
USB驱动程序中接受到数据但应用程序接收的数据全部为零,问题在什么地方?

实际情况如下:
有一设备通过USB与主机通信。在主机上有该设备的USB驱动程序和实际应用程序:
驱动程序: 驱动程序提供Read和Write函数接口,并有OnReadWriteComplete函数,该函数在读写操作完成后调用。
在主机应用程序: 通过CreateFile,ReadFile,WaitForMultipleObjects,GetOverlappedResult接收USB数据。

目前问题:
大部分时候USB通信正常,主机应用程序接受到的数据与OnReadWriteComplete中打印(调试状态打印)的数据一直,到那时有时候在OnReadWriteComplete打印出正常的数据(与设备端发送的数据完全一致),但是在主机应用程序中接收不到正确的数据,在GetOverlappedResult函数中返回了正确的数据长度,但是接受数据全部为零。
问题很奇怪,如果说是USB驱动的问题,但是绝大部分时候通信正常,而且在驱动程序中也接收到了正确的数据。如果是应用程序出了问题,但是 CreateFile,ReadFile,WaitForMultipleObjects,GetOverlappedResult 都是kernel32.dll中的函数,应该不会有问题。
而且我也不清楚如何进行调试这些函数?
那位大侠有不同的见解,有没有软件或者调试工具可以截取到驱动和应用程序之间的通信? 3x
游客

返回顶部