Windows가 THREAD_STUCK_IN_DEVICE_DRIVER 오류를 중지합니다.

THREAD_STUCK_IN_DEVICE_DRIVER 오류 메시지는 장치 드라이버가 무한 루프에서 회전하여 연결된 하드웨어가 유휴 상태가 될 때까지 기다릴 때 발생합니다.

이 문제는 하드웨어 문제 또는 하드웨어를 프로그래밍하려는 장치 드라이버 문제로 인해 발생합니다. 이 오류는 결함이있는 비디오 카드 또는 비디오 카드 드라이버에서보다 일반적으로 발생합니다.

최종 사용자 솔루션

최종 사용자 (드라이버를 개발하지 않음)에서이 오류가 발생하면 업데이트 된 드라이버가 있는지 확인하십시오. 업데이트 된 드라이버가없고 새 하드웨어를 추가하지 않은 경우 컴퓨터의 하드웨어가 고장 나서 교체해야한다고 가정하는 것이 안전합니다.

개발자 솔루션

드라이버 개발자 이거나이 문제를 디버깅하려는 경우 .thread ( 레지스터 컨텍스트 설정 ) 명령을 사용하십시오. 그런 다음 스레드가 멈추는 위치를 찾으려면 kb ( 스택 스택 백 트레이스 표시 ) 명령을 사용하십시오.

이 문제를 해결하기 위해 디버거에서 정보를 사용할 수도 있습니다. DbgBreakPoint 는 Windows가 오류 또는 시간 종료 조건을 감지했을 때 이미 커널 디버거가 실행 중이면 오류가 발생할 때 호출됩니다. 이 경우 KeBugCheckEx 는 호출되지 않으며 .bugcheck ( 버그 확인 데이터 표시 ) 명령을 사용하면 유용한 정보 (정보가있는 경우)가 포함되지 않습니다.

디버거에는 위의 매개 변수와 유사한 정보가 포함됩니다. 운영 체제에 따라 두 명령 중 하나를 사용하여 Watchdog의 전역 변수에서 4 개의 매개 변수를 검색하여 4 개의 매개 변수를 계속 볼 수 있습니다.

  • 32 비트 시스템 : dd watchdog! g_WdBugCheckData L5
  • 64 비트 시스템 : dq watchdog! g_WdBugCheckData L5

이 대화 형 메서드를 사용하여 오류를 디버깅하면 오류를 일으키는 스레드를 찾고 스레드에서 중단 점을 설정 한 다음 g (이동) 명령을 사용하여 반복 코드를 디버깅 할 수 있습니다.