阅读:1047回复:4
驱动如何等待应用程序设置EVENT?
在驱动和应用共享一个event,在应用等待驱动把event设置为signal可以,反过来在驱动用KeWaitForSingleObject等待应用把event引发时,应用程序就会死掉,KeWaitForSingleObject的WaitReason和WaitMode参数不太理解,但是修改这两个参数问题依旧,是否和驱动的IRQL有关,或者能否用内核态线程解决这个问题?
|
|
|
沙发#
发布于:2002-12-18 15:51
WaitReason除非你指定了WrQueue参数,否则任何内核代码都不关心此值
WaitMode是MODE枚举类型,该枚举类型仅有两个值:KernelMode和UserMode。 第四个参数Alertable 是否设定为FALSE? |
|
|
板凳#
发布于:2002-12-18 16:27
我这里不管WaitReason设为Executive或UserRequest,WaitMode也不管是KernelMode或UserMode,都是一样让程序死掉。
Altertable一直都是false |
|
|
地板#
发布于:2002-12-18 16:34
但DDK中有一句If the WaitMode parameter is UserMode and the
Alertable parameter is TRUE, the thread can also be awakened to deliver a user-mode APC 似乎Alertable应设为TRUE,你说呢? 另外注意IRQL <= DISPATCH_LEVEL |
|
|
地下室#
发布于:2002-12-18 17:11
将Alertable改为true,结果依旧。
我检查了等待时的irql,确实<=DISPATCH_LEVEL |
|
|