다음을 통해 공유


드라이버 검증 도구

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

주의

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

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

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

Windows 10 및 이전 버전의 Windows용 드라이버 검증 도구의 변경 내용에 대한 자세한 내용은 드라이버 검증 도구: 새로운 기능입니다.

드라이버 검증 도구를 사용하는 경우

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

  • 개발 주기 초기에 문제를 찾기 위해 더 쉽고 비용이 적게 드는 문제를 해결합니다.

  • 테스트 오류 및 컴퓨터 크래시 문제 해결 및 디버깅을 위한 것입니다.

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

Important

Windows 하드웨어 호환성 프로그램에는 클라이언트 및 서버 운영 체제에서 STL(정적 도구 로고) 테스트용 CodeQL이 필요합니다. 우리는 기본 이전 제품에 대한 SDV 및 CA에 대한 지원을 계속 얻을 것입니다. 파트너는 정적 도구 로고 테스트에 대한 CodeQL 요구 사항을 검토하는 것이 좋습니다. CodeQL 사용에 대한 자세한 내용은 CodeQL 및 정적 도구 로고 테스트를 참조하세요.

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

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

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

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

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

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

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

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

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

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

    이 컴퓨터에 설치된 모든 드라이버를 자동으로 선택합니다.

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

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

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

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

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

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

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

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

참고 항목

Windows 버전 20150에서 25126까지 드라이버 검증 도구를 사용하는 경우 ntoskrnl선택한 경우 잘못된 상태 오류가 발생할 수 있습니다.
이 문제를 방지하려면 ntoskrnl을 선택 취소하거나 빌드 25126 이후 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 dumps captured Driver Verifier statistics. !verifier -?을(를) 사용하여 사용 가능한 모든 옵션을 표시합니다.

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

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

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

드라이버 검증 도구 옵션

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

드라이버 검증 도구 사용

드라이버 검증 도구 제어

DDI 규정 준수 검사ing