boyhan
驱动牛犊
驱动牛犊
  • 注册日期2002-03-08
  • 最后登录2004-11-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1408回复:1

大侠帮忙,用户态程序与驱动程序中EVENT的问题,急!!!

楼主#
更多 发布于:2002-04-08 21:07
我将用户态的event转换为内核的event后,在驱动里调用KeSetEvent来触发事件,使event置位,但我在驱动中用KeResetEvent去掉该event的置位信号后,用户态的WaitSingleObject仍然能够再等到一次该事件,请问是怎么回事?
大概过程如下:

 应用程序              驱动程序
WaitEvent...(1)-阻塞    。
。                       。
。                    KeSetEvent
。                       。
得到事件,处理           。
。                       。
。                    KeResetEvent(or KeClearEvent)
。                       。
WaitEvent...(2)
马上得到事件

WaitEvent...(3)-阻塞


疑惑的是为什么第二次WaitEvent能得到事件?怎么解决?
mask2000
驱动牛犊
驱动牛犊
  • 注册日期2002-04-08
  • 最后登录2002-08-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-09 09:34
我也试过,好象是驱动和应用层的事件虽然是共用同一
个事件,但是,两方面又各自拥有该事件的拷贝(不知该
怎么称呼),所以,你在驱动和应用各清一遍事件,仍然
还能收到事件。但是好象也只能持续几次而已。我感觉
由于操作系统原因驱动和应用层不可能保持严格的同步,
即使你用同步事件。
不是我不明白,只是这世界变化太快.
游客

返回顶部