| 
			 
					阅读:2109回复: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 .. 
					祝你早日成功!把经验拿来共享下!				 | 
	|