好的,所以 DPC_WATCHDOG_VIOLATION 是 BSOD 后的常见错误代码。我想知道 -
- 什么是 DPC Watchdog?我的意思是,它是什么意思?
- 它在 Windows 系统中起什么作用?它是如何被违反的?
有人可以帮忙吗?
编辑 :我确实在 Google 上搜索过。但我找到的都是“什么原因导致 DPC_WATCHDOG_VIOLATION?”或“如何修复 DPC_WATCHDOG_VIOLATION 问题”。
让我的问题更清楚一点,我主要想知道“DPC Watchdog”是,以及它在系统中的功能。
答案1
什么是“DPC Watchdog”?
概括:
延迟过程调用 (DPC) 由DPC 看门狗定时器。
当 DPC 看门狗计时器检测到 DPC 运行时间过长时,就会产生错误DPC_WATCHDOG_VIOLATION
。
详细说明
首先你需要了解什么是 DPC。简单的解释是:
延迟过程调用 (DPC) 是一种 Microsoft Windows 操作系统机制,它允许高优先级任务(例如中断处理程序)推迟所需但优先级较低的任务以供稍后执行。
这允许设备驱动程序和其他低级事件消费者快速执行其处理的高优先级部分,并安排非关键的额外处理以较低优先级执行。
来源延迟过程调用
Windows 需要一种机制来确定这些延迟过程调用何时出现问题(它们执行时间过长,因此降低了系统响应能力)。
这种机制就是DPC 看门狗定时器:
操作系统实现了 DPC 看门狗计时器,以检测单个 DPC 例程何时运行时间过长,或者一系列排队的 DPC 例程何时连续运行时间过长。
如果启用了 DPC 超时错误,并且 DPC 例程超出单个例程的时间限制,或者一系列 DPC 例程超出总时间限制,则会发生 DPC_WATCHDOG_VIOLATION (0x133) 错误检查。
...
DPC 例程应仅运行很短的时间,并且应将尽可能多的处理委托给工作线程。为避免降低系统响应能力,典型的 DPC 例程每次调用的运行时间不应超过 100 微秒。
来源KeQueryDpcWatchdogInformation 例程
错误检查 0x133 DPC_WATCHDOG_VIOLATION
此错误检查表明 DPC 监视程序已执行,因为它检测到单个长时间运行的延迟过程调用 (DPC),或者因为系统在 DISPATCH_LEVEL 或更高的中断请求级别 (IRQL) 上花费了很长时间。参数 1 的值表示单个 DPC 是否超出超时,或者系统是否累计在 IRQL DISPATCH_LEVEL 或更高级别上花费了很长时间。
DPC 的运行时间不应超过 100 微秒,ISR 的运行时间不应超过 25 微秒,但系统上的实际超时值设置得高得多。