阅读:1382回复:9
请教,关于取消Irp的怪问题
我在做一个针对网络的Filter,在处理IRP_MJ_READ时,构建一个异步读Irp下发,如果此时网络连接已经断开,那么IOCallDriver会被阻塞?如果这样,我想取消这个Irp,而IoCancelIrp也会被阻塞,请问如何处理这些阻塞?
|
|
沙发#
发布于:2007-07-24 14:03
大侠们,人呢,给点思路吧,郁闷好久了?到底怎么回事?
|
|
板凳#
发布于:2007-07-24 15:58
是一直阻塞退不出来,还是阻塞一段时间后能够结束等待?
|
|
|
地板#
发布于:2007-07-25 10:31
阻塞一段时间
|
|
地下室#
发布于:2007-07-25 10:35
if (STATUS_PENDING == IoCallDriver(TargetDevice, Irp))
KeWaitForSingleObject(&ntEvent, Executive, KernelMode, FALSE, NULL); 阻塞一段时间 |
|
5楼#
发布于:2007-07-25 12:25
那还有什么问题?这是正常的
|
|
|
6楼#
发布于:2007-07-25 16:34
我是说阻塞在IoCallDriver(TargetDevice, Irp))里,而不是KeWaitForSingleObject。
我想当遇到网络连接异常时,取消这个IRP请求,比如,IoCallDriver之后,等待500ms,如果还没返回,我认为网络异常,而结束这次请求,现在的问题是阻塞在IoCallDriver里,要等待20多秒,时间太长,请问大侠有没有办法解决这个问题呢? |
|
7楼#
发布于:2007-07-26 11:32
大侠们,人呢,给点帮助吧!
|
|
8楼#
发布于:2007-07-30 09:32
这个问题不好解决么?
|
|
9楼#
发布于:2007-07-30 13:13
阻塞在别人那里,你只能干着急,在往下CALL之前先判断下网络吧。
|
|
|