Bug 检查 0x102:DPC_WATCHDOG_TIMEOUT

DPC_WATCHDOG_TIMEOUT Bug 检查的值为 0x00000102。 这表示未在分配的时间间隔内执行 DPC 监视器例程。

重要

这篇文章适合程序员阅读。 如果您是在使用计算机时收到蓝屏错误代码的客户,请参阅蓝屏错误疑难解答

DPC_WATCHDOG_TIMEOUT 参数

参数 说明
1 DPC 监视器超时间隔,单位为标称时钟周期。
2 挂起处理器的 PRCB 地址。
3 Reserved
4 Reserved

原因

此 Bug 检查通常意味着 ISR 在低于时钟级别但高于调度级别的 IRQL 上挂起,或者 DPC 例程被挂起在指定的处理器上。

例如,对于 StorPort 微型端口驱动程序,StorPort.sys 在 DISPATCH_LEVEL 下运行的例程中处理 I/O 完成,并串行调用刚刚完成的所有 IRP 的 I/O 完成例程。 如果 I/O 完成例程单独或一起耗时太长,键盘和/或鼠标可能会停止响应。 Windows DPC 监视器计时器例程也有可能认为 StorPort 例程花费了过多的时间才完成。

解决方法

存储堆栈中的内核驱动程序可以通过高效编码驱动程序的 I/O 完成例程来降低出现问题的可能性。 如果仍然无法在足够时间内在完成例程中执行所有必要的处理,则例程可以为 I/O 工作创建工作元素,将元素排入工作队列并返回S TATUS_MORE_PROCESSING_REQUIRED;然后,驱动程序的工作线程应找到工作元素,执行工作,并为 IRP 执行 IoCallerDriver,以确保 IRP 的进一步 I/O 处理。