다음을 통해 공유


UMDF 2.0 드라이버 충돌 문제 해결

User-Mode 드라이버 프레임워크(UMDF) 버전 2부터 Wdfkd.dll 구현된 디버거 확장 명령의 하위 집합을 사용하여 UMDF 드라이버를 디버그할 수 있습니다. 이 문서에서는 UMDF 드라이버 문제를 해결하는 데 사용할 수 있는 명령에 대해 설명합니다.

UMDF 2.0 드라이버가 충돌한 이유 확인

드라이버 호스트 프로세스가 종료되면 드라이버가 콜백에서 호스트 시간 제한 임계값을 초과하는 문제가 발생할 수 있습니다. 이 경우 리플렉터가 드라이버 호스트 프로세스를 종료합니다.

조사하려면 먼저 UMDF 드라이버의 디버깅을 사용하도록 설정하는 방법에 설명된 대로 커널 모드 디버깅 세션을 설정합니다. 테스트 시스템에 연결된 커널 디버거를 사용하여 UMDF 드라이버의 모든 개발 및 테스트를 수행하고 WUDFHost.exe 애플리케이션 검증 도구(AppVerif.exe) 를 사용하도록 설정하는 것이 좋습니다. 다음 명령을 사용하여 커널 디버거를 연결한 다음 다시 부팅합니다.

AppVerif –enable Heaps Exceptions Handles Locks Memory TLS Leak –for WudfHost.exe
  • HostFailKdDebugBreak가 설정된 경우 시간 제한 임계값을 초과하면 리플렉터가 커널 모드 디버거로 중단됩니다. 디버거 출력에는 선택할 수 있는 링크를 포함하여 시작하는 방법에 대한 몇 가지 제안이 표시됩니다. 예:

    **** Problem detected in UMDF driver "WUDFOsrUsbFx2". !process 0xFFFFE0000495B080 0x1f, !devstack 0xFFFFE000032BFA10, Problem code 3 ****
    **** Dump UMDF driver image name and stack: !wdfkd.wdfumdevstack 0x000000BEBB49AE20
    **** Dump UM Irps for this stack: !wdfkd.wdfumirps 0x000000BEBB49AE20
    **** Dump UMDF trace log: !wmitrace.logdump WUDFTrace
    **** Helpful UMDF debugger extension commands: !wdfkd.wdfhelp
    **** Note that driver host process may get terminated if you go past this break, making it difficult to debug the problem!
    
  • !analyze를 사용하여 오류 및 시도할 수 있는 다른 UMDF 확장 명령에 대한 정보를 표시합니다. 이 명령은 UMDF 검증 도구 오류 또는 UMDF 처리되지 않은 예외에 도움이 될 수 있습니다. %ProgramData%\Microsoft\WDF에서 사용자 크래시 덤프 파일을 라이브 커널 디버깅 또는 디버깅하는 데 사용할 수 있습니다.

  • !process 0 0x1f wudfhost.exe 사용하여 스레드 스택 정보를 포함하여 모든 Wudfhost.exe 드라이버 호스트 프로세스를 나열합니다.

    !wdfkd.wdfumtriage 및 !wdfkd.wdfldr 을 사용하여 현재 WDF에 바인딩된 모든 드라이버를 표시할 수도 있습니다. UMDF 드라이버의 이미지 이름을 선택하면 디버거에 호스팅 프로세스의 주소가 표시됩니다. 그런 다음 프로세스 주소를 선택하여 해당 프로세스와 관련된 정보를 표시할 수 있습니다.

  • 필요한 경우 .process /r /p Process 를 사용하여 프로세스 컨텍스트를 드라이버를 호스팅하는 Wudfhost 프로세스의 컨텍스트로 전환합니다. .cache forcedecodeuserlmu를 사용하여 드라이버가 현재 프로세스에서 호스트되는지 확인합니다.

  • 스레드 호출 스택(!스레드 주소)을 검사하여 드라이버 콜백 시간이 초과되었는지 확인합니다. 스레드의 틱 수를 확인합니다. Windows 8.1 리플렉터의 시간이 1분 후에 초과됩니다.

  • !wdfkd.wdfdriverinfo MyDriver.dll 0x10 사용하여 자세한 정보 표시 형식으로 디바이스 트리를 표시합니다. 그런 다음 !wdfdevice를 선택합니다. 이 명령은 자세한 전원, 전원 정책 및 PnP(플러그 앤 플레이) 상태 정보를 표시합니다.

  • !wdfkd.wdfumirps를 사용하여 보류 중인 IRP를 찾습니다.

  • !wdfkd.wdfdevicequeues를 사용하여 드라이버 큐의 상태 검사.

  • 커널 모드 디버깅 세션에서 !wmitrace.logdump WudfTrace 를 사용하여 추적 로그를 표시할 수 있습니다.

UMDF 2.0 IFR 로그 표시

커널 모드 디버깅 세션에서 !wdfkd.wdflogdump 확장 명령을 사용하여 사용 가능한 경우 WDF(Windows Driver Frameworks) IFR(진행 중인 레코더) 로그 레코드를 표시할 수 있습니다.

메모리 덤프 파일 찾기

사용자 모드 덤프 파일을 찾는 방법에 대한 자세한 내용은 Reflector가 호스트 프로세스를 종료한 이유 확인 을 참조하세요. LogMinidumpType 레지스트리 값을 설정하여 미니덤프 파일에 저장된 정보의 유형을 지정하는 방법에 대한 자세한 내용은 UMDF 드라이버에서 WPP 소프트웨어 추적 사용을 참조하세요.