wxbfly
驱动牛犊
驱动牛犊
  • 注册日期2003-06-16
  • 最后登录2012-02-17
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1941回复:7

我修改了ddk自带的bulkusb驱动程序,在读写例程中加入了超时控制,没有蓝屏却发现在IoCompleteRequest后应用程序一直都在等待?

楼主#
更多 发布于:2003-07-17 13:59
我想强制结束都结束不掉。

我在读写例程中初始一事件,在完成例程中设置为有信号状态。在读写例程中等待此事件,如果超时则 IoCancelIrp,并等待此事件。然后设置相应的Status,并调用IoCompleteRequest,但是调用ReadFile的应用程序却仍然在死死的等待?
gjltce
驱动小牛
驱动小牛
  • 注册日期2003-07-05
  • 最后登录2011-12-10
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望59点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-17 15:42
这样不行。
如果超时则调用IoCancelIrp不会成功,因此应用程序仍然会死死的等待.
我认为下位机程序要设计好,当ReadFile 时,下位机应已将(即将)数据准备好。

wxbfly
驱动牛犊
驱动牛犊
  • 注册日期2003-06-16
  • 最后登录2012-02-17
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-17 15:53
我所做的完全是参照DS的SubmitUrb例程来做的,唯一不同的是DS自己分配了Irp,而我的Irp是由Read_Write例程接收的参数。我不知道它们有什么不同。

再说了,调试过程中IoCompleteRequest明明已经执行完成,为什么不能返回到应用程序?它停到哪儿了?
gjltce
驱动小牛
驱动小牛
  • 注册日期2003-07-05
  • 最后登录2011-12-10
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望59点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-17 16:08
是IoCallDriver 死掉了,他一直在等待。
最好用我说的方法。
这个问题我关注很长时间了,目前这能这样了。有空可以多交流。
wxbfly
驱动牛犊
驱动牛犊
  • 注册日期2003-06-16
  • 最后登录2012-02-17
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-17 16:35
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
gjltce
驱动小牛
驱动小牛
  • 注册日期2003-07-05
  • 最后登录2011-12-10
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望59点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-17 16:39
IoCallDriver 死掉了,他一直在等待。
实际上内核线程一直处于”挂起“状态。
wxbfly
驱动牛犊
驱动牛犊
  • 注册日期2003-06-16
  • 最后登录2012-02-17
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-17 16:49
多谢。
我会再试验的,如果成功我会告诉你的。
lang5312
驱动牛犊
驱动牛犊
  • 注册日期2005-10-08
  • 最后登录2009-08-25
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望284点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2009-08-12 14:21
Re:我修改了ddk自带的bulkusb驱动程序,在读写例程中加入了超时控制,没有蓝屏却发现在IoCompleteReque ..
祝你早日成功!把经验拿来共享下!
游客

返回顶部