OK、DPC_WATCHDOG_VIOLATIONはBSOD後の一般的なエラーコードです。知りたい-
誰か助けてもらえますか?
編集:私は確かにそれをググった。しかし、私が見つけたのは「DPC_WATCHDOG_VIOLATIONの原因は何ですか?」だけです。または「DPC_WATCHDOG_VIOLATIONの問題を修正する方法」。
クエリを明確にするために、私は主に「DPCウォッチドッグ」が何であるかと、それがシステムで機能していることを知りたいと思っています。
概要:
遅延プロシージャコール(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ルーチン
このバグチェックは、DPCウォッチドッグが単一の長時間実行遅延プロシージャ呼び出し(DPC)を検出したため、またはシステムがDISPATCH_LEVEL以上の割り込み要求レベル(IRQL)で長時間費やしたために実行されたことを示します。パラメータ1の値は、単一のDPCがタイムアウトを超えたかどうか、またはシステムがIRQLDISPATCH_LEVEL以上で累積的に長期間を費やしたかどうかを示します。
DPCは100マイクロ秒より長く実行してはならず、ISRは25マイクロ秒より長く実行してはなりませんが、システムの実際のタイムアウト値ははるかに高く設定されています。