다음을 통해 공유


UMDF 검증 도구 사용

프레임워크는 실행 중인 UMDF(사용자 모드 드라이버 프레임워크) 드라이버를 테스트하는 데 사용할 수 있는 기본 제공 확인 기능을 제공합니다. UMDF 검증 도구라고도 하는 이 기능은 드라이버의 상태와 드라이버가 프레임워크 개체 메서드에 전달하는 인수의 유효성을 광범위하게 검사합니다. UMDF 검증 도구 자체 또는 범용 AppVerif.exe(Application Verifier) 도구와 함께 사용할 수 있습니다.

UMDF 검증 도구는 잠금 획득 및 계층 구조를 확인하고, 올바른 I/O 취소 및 큐 사용을 확인하고, 드라이버와 프레임워크가 문서화된 계약을 따르는지 확인합니다.

UMDF 검증 도구로 인해 UMDF 드라이버 코드 에서 오류가 발생하여 호스트 프로세스를 버그 확인 합니다. 그러나 UMDF 버그 검사를 수행해도 오류에 대한 정보가 포함된 파란색 텍스트 화면이 표시되지는 않습니다. 대신 UMDF 버그를 확인합니다.

  • 메모리 덤프 파일을 만들고 컴퓨터의 로그 파일 디렉터리(예: %windir%\System32\LogFiles\WUDF\Xxx.dmp)에 파일을 저장합니다.

    참고 UMDF 2.15부터 로그 디렉터리가 %ProgramData%\Microsoft\WDF입니다.

  • Microsoft( 옵트인)에 대한 오류 보고서를 만듭니다.

  • 디버거가 컴퓨터에 연결되어 있으면 디버거에 침입합니다.

  • 호스트 프로세스를 종료하고 디바이스를 사용하지 않도록 설정합니다.

UMDF 2.0부터 UMDF 검증 도구는 경우에 따라 중단점을 발급하고 다른 경우에는 UMDF 버그 검사를 발생합니다. 이 동작은 KMDF 검증 도구의 동작과 유사합니다.

WUDFHost.exe 애플리케이션 검증 도구(AppVerif.exe)를 사용하도록 설정한 후 드라이버의 모든 개발 및 테스트를 수행하는 것이 좋습니다. 다음 명령을 사용하여 디버거를 연결한 다음 다시 부팅합니다.

AppVerif -enable Heaps Exceptions Handles Locks Memory TLS Leak -for WudfHost.exe

UMDF 버전 2.0부터 드라이버 호스트 프로세스(Wudfhost)에서 애플리케이션 검증 도구를 실행하는 경우 UMDF 검증 도구는 해당 호스트의 모든 UMDF 2.0 드라이버와 향후 드라이버 호스트 프로세스의 모든 UMDF 2.0 드라이버에 대해 자동으로 사용하도록 설정됩니다.

UMDF 1.11 이전 버전에서는 프레임워크의 검증 도구가 항상 켜지고 해제할 수 없습니다.

UMDF 검증 도구 사용 및 사용 안 함

VerifierOn을 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services<\driver name> 레지스트리 키의 드라이버 Parameters\Wdf 하위 키에서 0이 아닌 값으로 설정하여 UMDF 검증 도구를 수동으로 사용하도록 설정할 수 있습니다.

VerifierOn 값이 0으로 설정되더라도 Application Verifier와의 연결을 재정의합니다. 따라서 값을 0으로 설정하지 않고 강제로 적용하지 않는 경우 값을 삭제하는 것이 좋습니다.

UMDF 검증 도구가 사용되는지 여부를 확인하려면 드라이버가 WdfDriverCreate를 호출한 후 위치에서 중단점을 설정하고 !wdfdriverinfo 디버거 확장 명령을 사용합니다.

!wdfkd.wdfdriverinfo< 드라이버 이름> **** 0x1

디버거 확장 명령에 대한 자세한 내용은 프레임워크 기반 드라이버용 디버거 확장을 참조 하세요.

검증 도구의 동작 제어

레지스트리의 값을 수정하여 UMDF 검증 도구의 동작을 제어할 수 있습니다. 또는 WDF 검증 도구 제어 애플리케이션사용하여 이러한 값을 설정할 수 있습니다.

다음 레지스트리 값은 UMDF 1과 함께 사용할 수 있습니다.x 드라이버와 UMDF 2.0 이상 드라이버

VerifyDownLevel (REG_DWORD)
VerifyDownLevel이 0이 아닌 값으로 설정되어 있고 드라이버가 현재 버전보다 오래된 프레임워크 버전으로 빌드된 경우 프레임워크의 검증 도구에는 드라이버가 빌드된 후에 추가된 테스트가 포함됩니다. 이 값이 없거나 0으로 설정된 경우 프레임워크의 검증 도구에는 드라이버가 빌드될 때 존재했던 테스트만 포함됩니다.

예를 들어 드라이버가 프레임워크 버전 1.7로 빌드되고 프레임워크 버전 1.9가 컴퓨터에 설치된 경우 VerifyDownLevel을 0이 아닌 값으로 설정하면 드라이버가 실행될 때 검증 도구 버전 1.9에 추가된 테스트가 검증 도구에 포함됩니다.

이 값은 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\DriverName 레지스트리 키의 Parameters\Wdf 하위 키에 있습니다.

TrackObjects (REG_DWORD)
TrackObjects가 0이 아닌 값으로 설정된 경우 프레임워크 기반 개체가 유출된 경우(삭제되지 않음) 드라이버가 언로드될 때 프레임워크가 디버거에 들어갑니다.

정기적인 테스트 중에 TrackRefCounts가 아닌 TrackObjects 사용하도록 설정해야 합니다. 검증 도구에서 드라이버가 프레임워크 개체를 누출하고 있다고 보고하는 경우 컨트롤 애플리케이션을 사용하여 TrackRefCounts 검증 도구 옵션을 사용하도록 설정합니다.

이 값은 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services 레지스트리 키의 DefaultHostProcessGuid 하위 키에 있습니다. 여기서 DefaultHostProcessGuid는 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF 하위 키에서 찾을 수 있는 값입니다.

TrackRefCounts (REG_DWORD)
TrackRefCounts가 0이 아닌 값으로 설정된 경우 프레임워크는 각 프레임워크 기반 개체에 대한 참조 수를 유지 관리합니다. !wudfrefhist 디버거 확장을 사용하여 개체의 참조 개수 변경 내용을 볼 수 있습니다.

TrackRefCounts를 0이 아닌 값으로 설정하면 드라이버 성능이 저하되므로 개체 삭제 버그를 디버깅하지 않는 한 값을 0으로 유지해야 합니다.

이 값은 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services 레지스트리 키의 DefaultHostProcessGuid 하위 키에 있습니다. 여기서 DefaultHostProcessGuid는 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF 하위 키에서 찾을 수 있는 값입니다.

위에 나열된 레지스트리 값 외에도 UMDF 2.0 이상 드라이버는 KMDF 검증 도구 사용에 나열된 많은 레지스트리 값을 사용할 수 있습니다.