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

USB驱动程序中接受到数据但应用程序接收的数据全部为零,如何调试?

楼主#
更多 发布于:2009-05-26 10:58
USB驱动程序中接受到数据但应用程序接收的数据全部为零,如何调试?

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

目前问题:
大部分时候USB通信正常,主机应用程序接受到的数据与OnReadWriteComplete中打印(调试状态打印)的数据一直,到那时有时候在OnReadWriteComplete打印出正常的数据(与设备端发送的数据完全一致),但是在主机应用程序中接收不到正确的数据,在GetOverlappedResult函数中返回了正确的数据长度,但是接受数据全部为零。
觉得目前的问题是驱动程序和应用程序之间的交换出了问题,但是 CreateFile,ReadFile,WaitForMultipleObjects,GetOverlappedResult 都是kernel32.dll中的函数,如何进行调试这些函数?
或者那位大侠有不同的见解,3x
puyang
驱动牛犊
驱动牛犊
  • 注册日期2009-01-26
  • 最后登录2009-10-21
  • 粉丝0
  • 关注0
  • 积分56分
  • 威望561点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-05-26 16:41
        我觉得在驱动程序和应用程序应该没有问题,否则你在应用程序不可能接受到一次正确的数据,我认为错误在应用程序的编写上.比如同步问题,多线程时的同步问题.可能会导致你所说的错误.是本人的观点,请参考.
sanone28
驱动牛犊
驱动牛犊
  • 注册日期2009-06-05
  • 最后登录2010-01-18
  • 粉丝1
  • 关注0
  • 积分20分
  • 威望181点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-06-05 12:21
俺用的是周立功的D12,也收不到数据,还望给点建议。。
fenghua365
驱动牛犊
驱动牛犊
  • 注册日期2010-04-09
  • 最后登录2010-04-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2010-04-09 16:09
顶个啊,好
Pegram
论坛版主
论坛版主
  • 注册日期2005-12-03
  • 最后登录2013-08-23
  • 粉丝13
  • 关注5
  • 积分1333分
  • 威望4717点
  • 贡献值1点
  • 好评度78点
  • 原创分0分
  • 专家分2分
地下室#
发布于:2010-04-26 21:30
缓冲模式的问题?
《寒江独钓》与《竹林蹊径》的合作作者。精通USB开发,设计了CY001 USB驱动套件(http://bbs.driverdevelop.com/read.php?tid-119314.html)。
游客

返回顶部