前段时间帮朋友改进他做的文件加密Mini Filter Driver,好不容易把期待的功能完善好了,测试时开始频繁触发蓝屏,Bugcheck号是D1。WinDbg对这个错误号的简单解释如下:
DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
An attempt was made to access a pageable (or completely invalid) address at an interrupt request level (IRQL) that is too high. This is usually caused by drivers using improper addresses.
也就是在高IRQL试图访问可换页内存。看到这种错误的第一反应是头皮发麻。冷静下来后,我回想起以前自己总结出的经验,那就是碰到错误不要慌,首先把错误的所有信息解读清楚。
从栈回溯来看,发生错误的位置如下:
STACK_TEXT:
8078ab6c 99298fff badb0d00 868992b8 89d28620 nt!KiTrap0E+0x1b3
8078ac30 84c587d1 868992b8 8078ac84 9db0cff8 S_Crypt!PostRead+0x27
8078ac60 84c33324 868992b8 0278ac84 9db0cff8 fltmgr!FltvPostOperation+0x71
8078acc8 84c36512 00899258 86899258 10000000 fltmgr!FltpPerformPostCallbacks+0x24a
8078acdc 84c36b46 86899258 8078ad90