baggio081
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2008-02-20
  • 粉丝0
  • 关注0
  • 积分440分
  • 威望45点
  • 贡献值0点
  • 好评度44点
  • 原创分0分
  • 专家分0分
阅读:1379回复:2

为什么事件的状态被屏蔽了?

楼主#
更多 发布于:2007-08-07 11:18
我hook了KeBugCheckEx( ),希望有蓝屏事件的时候可以弹出一个对话框来,为此,在r3和r0建立了一个同名的事件,利用此事件来进行同步,r3程序等待事件,当有蓝屏发生的时候,在我hook的KeBugCheckEx( )里创建一个worker例程,在worker例程里激活这个同名事件,但是郁闷的是,r3里一直收不到这个消息.不知道为什么
我自己找了下原因,当我hook一个ZwCreateFile()的时候,是可以实现这个功能的,于是猜想和KeBugCheckEx( )这个函数有关系,可能系统在调用这个函数前做了一些工作,所以r3收不到事件的激活消息了,我看了下KeBugCheckEx( )里的IRQL是9,就是到了DIRQ的级别了,但是我在自己hook的KeBugCheckEx( )里创建的worker例程的IRQL是0呀..不知道为什么被屏蔽掉了.
要是我让自己hook的KeBugCheckEx( )在工作者例程做了事件激活的工作后,以一个return语句反回,那么r3就可以收到事件的消息,弹出对话眶了,
希望大家帮忙看看,我实在是不知道是什么原因了,
zzq191
驱动中牛
驱动中牛
  • 注册日期2001-08-09
  • 最后登录2018-05-29
  • 粉丝17
  • 关注0
  • 积分1041分
  • 威望716点
  • 贡献值0点
  • 好评度318点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-08-07 12:42
KeBugCheckEx( )里的IRQL是9,就是到了DIRQ的级别了,所以这个不执行完毕,你的worker例程是的不到机会来处理的吧
QQ:416331891,承接windows下应用和驱动的开发,雅虎通:zzq191, Email:zzq191@21cn.com
baggio081
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2008-02-20
  • 粉丝0
  • 关注0
  • 积分440分
  • 威望45点
  • 贡献值0点
  • 好评度44点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-07 13:57
在KeBugCheckEx( )可以用一个while循环等待,然后worker例程就可以执行的...
游客

返回顶部