バグ チェック 0x96: INVALID_WORK_QUEUE_ITEM
INVALID_WORK_QUEUE_ITEMバグ チェックには、0x00000096の値があります。 このバグチェックは、 NULL ポインターを含むキュー エントリが削除されたことを示しています。
重要
この記事は、プログラマー向けです。 コンピューターを使用中に、ブルー スクリーン エラーが表示された場合は、「ブルー スクリーン エラーのトラブルシューティング」を参照してください。
INVALID_WORK_QUEUE_ITEM パラメーター
パラメーター | 説明 |
---|---|
1 |
flink フィールドまたは blink フィールドが NULL のキュー エントリのアドレス。 |
2 |
参照されているキューのアドレス。 通常、このキューは ExWorkerQueueです。 |
3 |
ExWorkerQueue 配列のベース アドレス。 (このアドレスは、問題のキューが実際に ExWorkerQueue。キューが ExWorkerQueue の場合、このパラメーターからのオフセットによってキューが分離されます)。 |
4 |
キューが ExWorkerQueue であると仮定すると、この値は、作業項目が有効であった場合に呼び出されたワーカー ルーチンのアドレスです。 (このアドレスを使用して、作業キューを誤って使用しているドライバーを分離できます)。 |
原因
INVALID_WORK_QUEUE_ITEM バグ チェックは、 KeRemoveQueue がflink または blink フィールドが NULLのキュー エントリを削除する場合に発生します。
キューを誤用すると、このエラーが発生する可能性があります。 ただし、通常、このエラーは、ワーカー スレッドの作業項目が誤用されているために発生します。
キューのエントリは、一覧に 1 回だけ挿入できます。 項目がキューから削除されると、その flink フィールドは NULLに設定されます。 次に、この項目が 2 回目に削除されると、このバグチェックが発生します。
ほとんどの場合、参照されているキューは ExWorkerQueue (エグゼクティブ ワーカー キュー) です。 エラーの原因となったドライバーを識別するために、パラメーター 4 には、この作業項目が有効であった場合に呼び出されたワーカー ルーチンのアドレスが表示されます。 ただし、参照されているキューが ExWorkerQueueでない場合、このパラメーターは役に立ちません。