버그 검사 0x96: INVALID_WORK_QUEUE_ITEM

INVALID_WORK_QUEUE_ITEM 버그 검사 값은 0x00000096. 이 버그 검사 NULL 포인터가 포함된 큐 항목이 제거되었음을 나타냅니다.

중요

이 문서는 프로그래머용입니다. 컴퓨터를 사용하는 동안 파란색 화면 오류 코드를 받은 고객인 경우 블루 스크린 오류 문제 해결을 참조하세요.

INVALID_WORK_QUEUE_ITEM 매개 변수

매개 변수 Description

1

flink 또는 blink 필드가 NULL인 큐 항목의 주소입니다.

2

참조되는 큐의 주소입니다. 일반적으로 이 큐는 ExWorkerQueue입니다.

3

ExWorkerQueue 배열의 기본 주소입니다. (이 주소는 문제의 큐가 실제로 ExWorkerQueue인지 확인하는 데 도움이 됩니다. 큐가 ExWorkerQueue이면 이 매개 변수의 오프셋이 큐를 격리합니다.)

4

큐가 ExWorkerQueue라고 가정하면 이 값은 작업 항목이 유효한 경우 호출되었을 작업자 루틴의 주소입니다. (이 주소를 사용하여 작업 큐를 잘못 사용하는 드라이버를 격리할 수 있습니다.)

원인

INVALID_WORK_QUEUE_ITEM 버그 검사 KeRemoveQueueflink 또는 blink 필드가 NULL인 큐 항목을 제거할 때 발생합니다.

모든 큐 오용으로 인해 이 오류가 발생할 수 있습니다. 그러나 일반적으로 이 오류는 작업자 스레드 작업 항목이 오용되기 때문에 발생합니다.

큐의 항목은 목록에 한 번만 삽입할 수 있습니다. 항목이 큐에서 제거되면 해당 flink 필드가 NULL로 설정됩니다. 그런 다음 이 항목이 두 번째로 제거되면 이 버그 검사 발생합니다.

대부분의 경우 참조되는 큐는 ExWorkerQueue (임원 작업자 큐)입니다. 오류를 발생시킨 드라이버를 식별하기 위해 매개 변수 4는 이 작업 항목이 유효한 경우 호출되었을 작업자 루틴의 주소를 표시합니다. 그러나 참조되는 큐가 ExWorkerQueue가 아닌 경우 이 매개 변수는 유용하지 않습니다.