DPC_WATCHDOG_VIOLATION 参数
参数 1 表示违规类型。
其他参数的含义取决于参数 1 的值。
参数 1 | 参数 2 | 参数 3 | 参数 4 | 错误原因 |
---|---|---|---|---|
0 | DPC 时间计数(以滴答计) | DPC 时间分配(以滴答计)。 | 保留 | 单个 DPC 或者 ISR 超出其时间分配。违规组件通常可以通过堆栈跟踪来识别。 |
1 | 看门狗周期 | 保留 | 保留 | 系统在 IRQL DISPATCH_LEVEL 或者更高级别上累积花费了较长时间。违规组件通常可以通过堆栈跟踪来识别。 |
DPC_WATCHDOG_VIOLATION 错误检查的值为 0x00000133.
此错误检查表明 DPC 看门狗已执行,因为它检测到单个长时间运行的延迟过程调用 (DPC),或者因为系统在 DISPATCH_LEVEL 或者更高的中断请求级别 (IRQL) 上花费了很长时间。
参数 1 的值表示单个 DPC 是否超过超时,或者系统是否在 IRQL DISPATCH_LEVEL 或者更高级别累积花费了较长时间。
DPC 的运行时间不应超过 100 微秒,ISR 的运行时间不应超过 25 微秒,但是系统上的实际超时值设置得更高。
备注
通常,此停止代码是由错误的驱动程序代码引起的,在某些情况下,未在指定的时间范围内完成其工作。
如果我们不具备使用 Windows 调试器解决此问题的能力,则应使用一些基本的故障排除技术。
- 如果在错误检查消息中确定了驱动程序,要隔离问题,请禁用该驱动程序。请与制造商联系以获取驱动程序更新。
- 检查事件查看器中的系统日志以获取可能有助于识别导致错误检查 0x133 的设备或者驱动程序的其他错误消息。
- 确认安装的任何新硬件都与安装的 Windows 版本兼容。例如,我们可以在 Windows 10 规范中获取有关所需硬件的信息。
- 有关其他常规故障排除信息,请参阅蓝屏数据。
原因
!analyze 调试扩展显示有关错误检查的信息,有助于确定根本原因。
详细步骤查看我们的教程 在windows 中使用WinDBG 调试dmp文件
参数 1 = 0
在此示例中,501 的滴答计数超过了 DPC 时间分配 500。
图像名称表明此代码在错误检查发生时正在执行。
0: kd> !analyze -v *** * * * Bugcheck Analysis * * * *** DPC_WATCHDOG_VIOLATION (133) The DPC watchdog detected a prolonged run time at an IRQL of DISPATCH_LEVEL or above. Arguments: Arg1: 0000000000000000, A single DPC or ISR exceeded its time allotment. The offending component can usually be identified with a stack trace. Arg2: 0000000000000501, The DPC time count (in ticks). Arg3: 0000000000000500, The DPC time allotment (in ticks). Arg4: 0000000000000000 ... IMAGE_NAME: BthA2DP.sys ...
使用以下调试器命令收集参数为 0 的故障的更多信息:
k(显示堆栈回溯)查看停止代码发生时正在运行的代码。
我们可能希望使用 u、ub、uu(反汇编)命令更深入地了解正在运行的代码的细节。
!pcr 扩展名显示特定处理器上处理器控制区域 (PCR) 的当前状态。
输出中将是 Prcb 的地址。
Prcb: fffff80309974180
我们可以使用 dt(显示类型)命令来显示有关 DPC 和 DPC 看门狗的添加信息。
对于地址,请使用 !pcr 输出中列出的 Prcb:
dt nt!_KPRCB fffff80309974180 Dpc*
参数 1 = 1
对于参数 1,代码可能不会停止在代码的违规区域。
在这种情况下,一种方法是使用事件跟踪来尝试追踪哪个驱动程序超出了它的正常执行持续时间。
有关详细信息,请参阅以下主题:
使用 Windows 调试器 (WinDbg) 进行故障转储分析 使用 WinDbg
分析内核模式转储文件
使用 !analyze 扩展和 !analyze