阅读:1491回复:4
如何让IRP处理过程等待
我想用一个应用程序何一个驱动来控制光盘的识别,做法是先用应用程序创建两个event,通过消息传递给驱动程序,然后应用程序通过一个线程等待事件的发生。驱动程序在MOunt事件发生时在处理函数sfControlMountVolume中Set其中的一个事件hMountEvent,然后等待另一个判断是否合法的事件hCheckOK的触发。我是这么写的:
if(STATUS_SUCCESS == KeWaitForSingleObject((PKEVENT)gpPermitEventObject,Executive,UserMode,0,0)) { DbgPrint("After gpPermitEventObject"); } else { Irp->IoStatus.Status = STATUS_ACCESS_DENIED; } 但是发现不管事件是否触发,KeWaitForSingleObject都永远也结束不了(if和else都进不去)。不知道为什么 请高人指点一下 |
|
沙发#
发布于:2007-06-20 16:28
发现mount处理中无法等到event,但是别的例程中没问题
|
|
板凳#
发布于:2007-06-18 14:29
我跟踪过了, 只有当这个IRP结束了才可以收到应用程序设定的event,如果这个时候让mount处理延时的话一样收不到。怎么办好呢
|
|
驱动小牛
![]() |
地板#
发布于:2007-06-18 13:56
如果你一步一步跟踪后发现在WAIT那行不动了,那很明显是没有等到事件
|
|
地下室#
发布于:2007-06-18 12:55
STATUS_PENDING
|
|
|