h13
h13
驱动老牛
驱动老牛
  • 注册日期2002-07-10
  • 最后登录2008-10-24
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1047回复:4

驱动如何等待应用程序设置EVENT?

楼主#
更多 发布于:2002-12-18 14:49
在驱动和应用共享一个event,在应用等待驱动把event设置为signal可以,反过来在驱动用KeWaitForSingleObject等待应用把event引发时,应用程序就会死掉,KeWaitForSingleObject的WaitReason和WaitMode参数不太理解,但是修改这两个参数问题依旧,是否和驱动的IRQL有关,或者能否用内核态线程解决这个问题?
<table> [color=#8040FF]神,常虚以凝而灵明湛定 气,常静以养而充盈流通[/color] </table>
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-18 15:51
WaitReason除非你指定了WrQueue参数,否则任何内核代码都不关心此值
WaitMode是MODE枚举类型,该枚举类型仅有两个值:KernelMode和UserMode。

第四个参数Alertable 是否设定为FALSE?
生命驱动,活力无限!
h13
h13
驱动老牛
驱动老牛
  • 注册日期2002-07-10
  • 最后登录2008-10-24
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-18 16:27
我这里不管WaitReason设为Executive或UserRequest,WaitMode也不管是KernelMode或UserMode,都是一样让程序死掉。

Altertable一直都是false
<table> [color=#8040FF]神,常虚以凝而灵明湛定 气,常静以养而充盈流通[/color] </table>
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于: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
生命驱动,活力无限!
h13
h13
驱动老牛
驱动老牛
  • 注册日期2002-07-10
  • 最后登录2008-10-24
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-18 17:11
将Alertable改为true,结果依旧。

我检查了等待时的irql,确实<=DISPATCH_LEVEL
<table> [color=#8040FF]神,常虚以凝而灵明湛定 气,常静以养而充盈流通[/color] </table>
游客

返回顶部