드라이버 검증 도구

드라이버 검증 도구는 Windows 커널 모드 드라이버 및 그래픽 드라이버를 모니터링하여 시스템을 손상할 수 있는 잘못된 함수 호출 또는 작업을 검색합니다. 드라이버 검증 도구는 Windows 드라이버에 다양한 스트레스와 테스트를 적용하여 부적절한 동작을 찾을 수 있습니다. 실행할 테스트를 구성할 수 있습니다. 이를 통해 과도한 스트레스 로드를 통해 또는 보다 간소화된 테스트를 통해 드라이버를 배치할 수 있습니다. 여러 드라이버에서 동시에 또는 한 번에 하나의 드라이버에서 드라이버 검증 도구 를 실행할 수도 있습니다.

주의

  • 드라이버 검증 도구가 실행되면 컴퓨터가 충돌할 수 있습니다.
  • 테스트 및 디버깅에 사용하는 컴퓨터에서만 드라이버 검증 도구 를 실행해야 합니다.
  • 드라이버 검증 도구를 사용하려면 컴퓨터의 Administrators 그룹에 있어야 합니다.

드라이버 검증 도구는 어디에서 다운로드할 수 있나요?

드라이버 검증 도구는 %WinDir%\system32\의 대부분의 Windows 버전에 Verifier.exe 포함되어 있으므로 다운로드할 필요가 없습니다. (드라이버 검증 도구는 Windows 10 S에 포함되지 않으므로 대신 Windows 10 드라이버 동작을 테스트하는 것이 좋습니다.) 드라이버 검증 도구는 다운로드 패키지로 별도로 배포되지 않습니다.

Windows 10 및 이전 버전의 Windows용 드라이버 검증 도구의 변경 내용에 대한 자세한 내용은 드라이버 검증 도구: 새로운 기능 을 참조하세요.

드라이버 검증 도구 사용 시기

드라이버 개발 및 테스트 전반에 걸쳐 드라이버 검증 도구를 실행합니다. 보다 구체적으로는 다음 용도로 드라이버 검증 도구 를 사용합니다.

  • 개발 주기 초기에 문제를 찾으려면 문제를 해결하기가 더 쉽고 비용이 적게 듭니다.

  • 테스트 오류 및 컴퓨터 크래시 문제 해결 및 디버깅.

  • WDK, Visual Studio 및 Windows HLK(Windows Hardware Lab Kit) 또는 Windows 하드웨어 인증 키트(Windows 8.1)의 테스트를 사용하여 테스트용 드라이버를 배포할 때의 동작을 모니터링합니다. 드라이버 테스트에 대한 자세한 내용은 드라이버 테스트를 참조하세요.

드라이버 검증 도구 시작 방법

테스트 컴퓨터 또는 테스트 및 디버깅 중인 컴퓨터에서만 드라이버 검증 도구를 실행해야 합니다. 드라이버 검증 도구의 이점을 최대한 활용하려면 커널 디버거를 사용하고 테스트 컴퓨터에 연결해야 합니다. 디버깅 도구에 대한 자세한 내용은 Windows용 디버깅 도구(WinDbg, KD, CDB, NTSD)를 참조하세요.

  1. 관리자 권한으로 실행을 선택하여 명령 프롬프트 창을 시작하고 검증 도구를 입력하여 드라이버 검증 도구 관리자를 엽니다.

  2. 표준 설정 만들기(기본 작업)를 선택하고 다음을 선택합니다.

    사용자 지정 설정 만들기를 선택하여 미리 정의된 설정에서 선택하거나 개별 옵션을 선택할 수도 있습니다. 자세한 내용은 드라이버 검증 도구 옵션 및 규칙 클래스 및드라이버 검증 도구 옵션 선택을 참조하세요.

  3. 확인할 드라이버 선택에서 다음 표에 설명된 선택 구성표 중 하나를 선택합니다.

    옵션 권장되는 사용
    서명되지 않은 드라이버 자동 선택

    서명된 드라이버가 필요하지 않은 Windows 버전을 실행하는 컴퓨터에서 테스트하는 데 유용합니다.

    이전 버전의 Windows용으로 빌드된 드라이버 자동 선택

    최신 버전의 Windows와 드라이버 호환성을 테스트하는 데 유용합니다.

    이 컴퓨터에 설치된 모든 드라이버 자동 선택

    시스템에서 테스트되는 드라이버 수 측면에서 최대 적용 범위를 제공합니다. 이 옵션은 드라이버가 시스템의 다른 디바이스 또는 드라이버와 상호 작용할 수 있는 테스트 시나리오에 유용합니다.

    이 옵션은 특수 풀 및 일부 리소스 추적에 사용할 수 있는 리소스를 소진할 수도 있습니다. 모든 드라이버를 테스트하면 시스템 성능에도 부정적인 영향을 줄 수 있습니다.

    목록에서 드라이버 이름 선택

    대부분의 경우 테스트할 드라이버를 지정하려고 합니다.

    디바이스 스택에서 모든 드라이버를 선택하면 IRP(I/O 요청 패킷)가 스택의 각 드라이버 간에 전달되므로 개체를 추적하고 규정 준수를 검사 향상된 I/O 확인 옵션을 사용하면 오류가 감지될 때 더 높은 수준의 세부 정보를 제공할 수 있습니다.

    시스템 또는 드라이버 성능 메트릭을 측정하는 테스트 시나리오를 실행하거나 메모리 손상 또는 리소스 추적 문제(예: 교착 상태 또는 뮤텍스)를 검색하는 데 사용할 수 있는 가장 많은 리소스를 할당하려는 경우 단일 드라이버를 선택합니다. 특수 풀I/O 확인 옵션은 한 번에 하나의 드라이버에서 사용할 때 더 효과적입니다.

  4. 목록에서 드라이버 이름 선택을 선택한 경우 다음을 선택한 다음 하나 이상의 특정 드라이버를 선택합니다.

  5. 마침을 선택한 다음 컴퓨터를 다시 시작합니다.

참고

Windows 버전 20150에서 25126까지 드라이버 검증 도구 사용 시 ntoskrnl 을 선택한 경우 잘못된 상태 오류가 발생할 수 있습니다.
이 문제를 방지하려면 빌드 25126 이후 ntoskrnl 을 선택 취소하거나 Windows 버전으로 업그레이드합니다.

명령 프롬프트에서 드라이버 검증 도구 실행

드라이버 검증 도구 관리자를 시작하지 않고 명령 프롬프트 창에서 드라이버 검증 도구 를 실행할 수도 있습니다. 예를 들어 myDriver.sys라는 드라이버 에서 표준 설정을 사용하여 드라이버 검증 도구 를 실행하려면 다음 명령을 사용합니다.

verifier /standard /driver myDriver.sys

명령줄 옵션에 대한 자세한 내용은 드라이버 검증 도구 명령 구문을 참조하세요.

드라이버 검증 도구 제어 방법

드라이버 검증 도구 관리자 또는 명령줄을 사용하여 드라이버 검증 도구 제어를 수행할 수 있습니다. 드라이버 검증 도구 관리자를 시작하려면 이 항목의 앞부 분에 있는 드라이버 검증 도구 시작 방법을 참조하세요.

다음 각 작업에 대해 드라이버 검증 도구 관리자를 사용하거나 명령줄을 입력할 수 있습니다.

드라이버 검증 도구 중지 또는 다시 설정

  1. 드라이버 검증 도구 관리자에서 기존 설정 삭제를 선택한 다음 마침을 선택합니다.

    또는

    명령 프롬프트에 다음 명령을 입력합니다.

    verifier /reset
    
  2. 컴퓨터를 다시 시작합니다.

드라이버 검증 도구 통계를 보려면

드라이버 검증 도구 관리자에서 현재 확인된 드라이버에 대한 정보 표시를 선택한 다음, 다음을 선택합니다. 다음을 계속 선택하면 추가 정보가 표시됩니다.

또는

명령 프롬프트에 다음 명령을 입력합니다.

verifier /query

드라이버 검증 도구 설정을 보려면

드라이버 검증 도구 관리자에서 기존 설정 표시를 선택한 다음, 다음을 선택합니다.

또는

명령 프롬프트에 다음 명령을 입력합니다.

verifier /querysettings

드라이버 검증 도구 위반을 디버그하는 방법

드라이버 검증 도구의 이점을 최대한 활용하려면 커널 디버거를 사용하여 테스트 컴퓨터에 연결해야 합니다. Windows용 디버깅 도구에 대한 개요는 Windows용 디버깅 도구(WinDbg, KD, CDB, NTSD)를 참조하세요.

드라이버 검증 도구가 위반을 감지하면 컴퓨터를 중지하는 버그 검사 생성됩니다. 이는 문제를 디버깅할 수 있는 가장 많은 정보를 제공하기 위한 것입니다. 드라이버 검증 도구를 실행하는 테스트 컴퓨터에 커널 디버거가 연결되어 있고 드라이버 검증 도구가 위반을 감지하면 Windows가 디버거에 침입하여 오류에 대한 간략한 설명을 표시합니다.

드라이버 검증 도구에서 검색한 모든 위반으로 인해 버그 검사가 발생합니다. 일반적으로 버그 검사 0xC4. 자세한 내용은 버그 검사 0xC4 디버깅: DRIVER_VERIFIER_DETECTED_VIOLATION버그 검사 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION 참조하세요.

다른 일반적인 버그 검사 코드에는 다음이 포함됩니다.

자세한 내용은 드라이버 검증 도구가 사용하도록 설정된 경우 버그 검사 처리를 참조하세요.

새 디버깅 세션을 시작할 때 디버거 확장 명령 !analyze를 사용합니다. 커널 모드에서 !analyze 명령은 가장 최근의 버그 검사 대한 정보를 표시합니다. 추가 정보를 표시하려면 오류 드라이버를 식별하는 데 도움이 되도록 kd> 프롬프트에서 명령에 -v 옵션을 추가합니다.

kd> !analyze -v

!analyze 외에도 kd> 프롬프트에서 다음 디버거 확장을 입력하여 드라이버 검증 도구와 관련된 정보를 볼 수 있습니다.

  • !verifier 는 캡처된 드라이버 검증 도구 통계를 덤프합니다. 사용 가능한 모든 옵션을 표시하려면 !verifier -? 를 사용합니다.

    kd> !verifier
    
  • !deadlock 는 드라이버 검증 도구의 교착 상태 검색 기능으로 추적된 잠금 또는 개체와 관련된 정보를 표시합니다. 사용 가능한 모든 옵션을 표시하려면 !deadlock -? 를 사용합니다.

    kd> !deadlock
    
  • !iovirp [address]는 I/O 검증 도구에서 추적하는 IRP와 관련된 정보를 표시합니다. 예를 들면 다음과 같습니다.

    kd> !iovirp 947cef68
    
  • 위반된 DDI 규정 준수 검사 규칙을 조회합니다. (RuleID는 항상 버그 검사 첫 번째 인수입니다.) DDI 규정 준수 검사의 모든 규칙 ID는nn 형식으로 0x200.

드라이버 검증 도구 옵션

드라이버 검증 도구 명령 구문

드라이버 검증 도구 사용

드라이버 검증 도구 제어

DDI 규정 준수 검사