ruby0602
驱动牛犊
驱动牛犊
  • 注册日期2007-10-12
  • 最后登录2016-01-09
  • 粉丝2
  • 关注0
  • 积分9分
  • 威望63点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
阅读:4891回复:5

驱动中使用KeSetEvent蓝屏

楼主#
更多 发布于:2008-07-01 22:54
在驱动中的MPSendPackets中写入KeSetEvent(hhEvent, 0, FALSE);安装蓝屏提示IRQL_NOT_LESS_OR_EQUAL,好像是分页内存的问题,怎么解决?
驱网无线,快乐无限
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
沙发#
发布于:2008-07-02 12:11
1 去掉后是否蓝屏?

2 加上后蓝屏,看看蓝屏的位置

3 可能是irq的level是否超出了setevent的要求?
走走看看开源好 Solaris vs Linux
Delphips
驱动小牛
驱动小牛
  • 注册日期2003-11-10
  • 最后登录2011-02-21
  • 粉丝1
  • 关注1
  • 积分-363分
  • 威望168点
  • 贡献值0点
  • 好评度151点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-07-02 16:37
event初始化了没有?
ruby0602
驱动牛犊
驱动牛犊
  • 注册日期2007-10-12
  • 最后登录2016-01-09
  • 粉丝2
  • 关注0
  • 积分9分
  • 威望63点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-07-02 18:10
去掉KeSetEvent(hhEvent, 0, FALSE);就不蓝屏,hhEvent初始化为NULL
事件是在应用程序里创建的
如果是irq的level是否超出了setevent的要求,那怎么看irq的level呢?
驱网无线,快乐无限
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
地下室#
发布于:2008-07-03 13:53
获取当前调用event事情所有dispatch的irq 的level,特别是蓝屏时的值。然后和ddk比较

要不就用调试器调试跟踪调试好了,最简单的
走走看看开源好 Solaris vs Linux
ruby0602
驱动牛犊
驱动牛犊
  • 注册日期2007-10-12
  • 最后登录2016-01-09
  • 粉丝2
  • 关注0
  • 积分9分
  • 威望63点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-07-04 22:33
ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL);
                                    KeRaiseIrql(DISPATCH_LEVEL, &oldirql);
                                    KeSetEvent(ppEvent,0,FALSE);
                                    KeLowerIrql(oldirql);
加入以上代码还是蓝屏
驱网无线,快乐无限
游客

返回顶部