Windows驱动,一次死机教训

原创博客,来自:http://blog.csdn.net/u010147522/article/details/74068534

问题的症状是莫名死机,中断产生后,可能第一百次,可能第两百多次。
但只要你实验的足够久,注定某一次就死机了,完全卡死,没有蓝屏信息,就是电脑卡死。

怀疑了分页内存的问题,当然,中断处理函数不能够指定放在分页内存中。因为可能会导致蓝屏,并且还有可能导致驱动安装过后需要重启电脑才能正确使用硬件的问题。

最后经过排查发现,死机的原因是在中断处理函数中调用KeSetEvent导致

Windows XP上这么做是不会出问题的,但是在Windows 7 64位操作系统上,必挂! Win7 32位没有试过。

怎么解决呢?
将此类函数放在中断延迟调用函数里,也就是DPC函数中。不要直接在中断ISR函数中直接调用。

至于原因,网上没有找到具体的描述,个人猜测是WDF驱动模型更加规范的编写要求吧。ISR函数中本不该做这些事情,ISR中要做好判断中断,如果是就清中断就好。也可能是在调用KeSetEvent的时候IRQL提升有关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值