阅读:1941回复:7
我修改了ddk自带的bulkusb驱动程序,在读写例程中加入了超时控制,没有蓝屏却发现在IoCompleteRequest后应用程序一直都在等待?
我想强制结束都结束不掉。
我在读写例程中初始一事件,在完成例程中设置为有信号状态。在读写例程中等待此事件,如果超时则 IoCancelIrp,并等待此事件。然后设置相应的Status,并调用IoCompleteRequest,但是调用ReadFile的应用程序却仍然在死死的等待? |
|
沙发#
发布于:2003-07-17 15:42
这样不行。
如果超时则调用IoCancelIrp不会成功,因此应用程序仍然会死死的等待. 我认为下位机程序要设计好,当ReadFile 时,下位机应已将(即将)数据准备好。 |
|
板凳#
发布于:2003-07-17 15:53
我所做的完全是参照DS的SubmitUrb例程来做的,唯一不同的是DS自己分配了Irp,而我的Irp是由Read_Write例程接收的参数。我不知道它们有什么不同。
再说了,调试过程中IoCompleteRequest明明已经执行完成,为什么不能返回到应用程序?它停到哪儿了? |
|
地板#
发布于:2003-07-17 16:08
是IoCallDriver 死掉了,他一直在等待。
最好用我说的方法。 这个问题我关注很长时间了,目前这能这样了。有空可以多交流。 |
|
地下室#
发布于:2003-07-17 16:35
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx |
|
5楼#
发布于:2003-07-17 16:39
IoCallDriver 死掉了,他一直在等待。
实际上内核线程一直处于”挂起“状态。 |
|
6楼#
发布于:2003-07-17 16:49
多谢。
我会再试验的,如果成功我会告诉你的。 |
|
7楼#
发布于:2009-08-12 14:21
Re:我修改了ddk自带的bulkusb驱动程序,在读写例程中加入了超时控制,没有蓝屏却发现在IoCompleteReque ..
祝你早日成功!把经验拿来共享下! |
|