huihuiqi
驱动牛犊
驱动牛犊
  • 注册日期2010-11-15
  • 最后登录2011-07-26
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望131点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2766回复:3

Win7上键盘过滤驱动卸载蓝屏(已解决)

楼主#
更多 发布于:2011-07-21 14:16
在看《寒江独钓》第四章,键盘过滤这一块!
照着书中的代码敲了一遍,还没加复杂的功能,仅仅是打印出扫描码。
卸载的时候,是用全局变量来计数,就是如果全局变量不为0,就说明有请求还米完成,就一直等,直到有按键按下,请求完成,卸载完成!
在Win7上编译完,加载驱动之后,再停止驱动就出问题了,开始是程序在等你按最后一次按键,按了之后,打印完成,紧接着蓝屏!
同样的在Win7上编译出来的这个驱动,在XP上面卸载没有问题。求高手指点!
 
系统出错信息如下:

图片:QQ截图20110721103320.png


 

图片:QQ截图20110721103430.png


……

图片:QQ截图20110721103455.png


huihuiqi
驱动牛犊
驱动牛犊
  • 注册日期2010-11-15
  • 最后登录2011-07-26
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望131点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2011-07-26 14:00

补充:Win7上面可以卸载,只不过卸载之后接着蓝屏鸟!
huihuiqi
驱动牛犊
驱动牛犊
  • 注册日期2010-11-15
  • 最后登录2011-07-26
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望131点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2011-07-26 16:50
问题解决
 
在使用了ObReferenceObjectByName之后,需要对引用的驱动对象减少计数,否则在卸载时候无法销毁!
我照着《寒江独钓》书上写的代码,是这样写的ObDereferenceObject(DriverObject),参数不对!在XP上面可能检查不太严格吧,所以就正常没有问题。
谢谢大家的关注,希望遇到这个问题的朋友引以为戒,多思考^_^
dionysus77
驱动小牛
驱动小牛
  • 注册日期2006-11-15
  • 最后登录2011-12-18
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望392点
  • 贡献值0点
  • 好评度177点
  • 原创分0分
  • 专家分0分
地板#
发布于:2011-07-27 23:14
恭喜,自己动手丰衣足食的乐趣
游客

返回顶部