다음을 통해 공유


드라이버 검증 도구

드라이버 검증 도구는 시스템 충돌 또는 손상을 일으키기 전에 드라이버 문제를 식별하는 데 도움이 되는 Windows 테스트 도구입니다. 드라이버 검증 도구는 커널 모드 드라이버 및 그래픽 드라이버를 실시간으로 모니터링하여 시스템을 불안정하게 만들 수 있는 잘못된 함수 호출 및 문제가 있는 작업을 감지합니다.

새로운 드라이버를 개발하든 기존 드라이버를 문제 해결하든 관계없이 드라이버 검증 도구는 신뢰할 수 있는 고품질 드라이버를 빌드하는 데 필요한 조기 검색 및 디버깅 기능을 제공합니다. 이 포괄적인 가이드에서는 기본 설정부터 고급 디버깅 기술에 이르기까지 모든 것을 다룹니다.

  • 드라이버 검증 도구를 사용하는 시기와 이유 알아보기
  • 테스트 환경에 대한 드라이버 검증 도구 설정
  • 특정 요구 사항에 대한 확인 옵션 구성
  • 위반 디버그 및 결과 해석
  • 드라이버 테스트 워크플로에 대한 모범 사례 적용

중요합니다

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

드라이버 검증 도구는 어디서 얻을 수 있나요?

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

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

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

드라이버 개발 및 테스트 프로세스 전체에서 드라이버 검증 도구를 사용합니다.

초기 개발

  • 더 쉽고 비용이 적게 드는 문제를 수정할 때 개발 주기 초기에 문제를 찾습니다.
  • 생산에 도달하기 전에 문제를 발견하여 비용이 많이 드는 지연을 방지하십시오

Troubleshooting

  • 테스트 실패 및 컴퓨터 크래시를 빠르게 디버그합니다
  • 드라이버 관련 시스템 불안정의 근본 원인 식별

테스트 및 배포

포괄적인 드라이버 테스트 지침은 드라이버 테스트를 참조하세요.

중요합니다

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

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

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

드라이버 검증 도구를 제어하려면 원하는 방법을 선택합니다.

  • GUI(드라이버 검증 도구 관리자) - 초보자를 위한 더 쉬운 시각적 인터페이스
  • 명령줄 - 숙련된 사용자를 위한 빠른 실행, 스크립트 가능

비고

드라이버 검증 도구 관리자를 시작하려면 이전 섹션에서 드라이버 검증 도구를 시작하는 방법을 참조하세요.

일반적인 드라이버 검증 도구 작업

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

드라이버 검증 도구를 중지하거나 다시 설정하려면

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

    또는

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

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

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

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

또는

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

verifier /query

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

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

또는

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

verifier /querysettings

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

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

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

드라이버 검증 도구에서 검색된 모든 위반으로 인해 버그 검사가 발생합니다. 이 버그 체크는 보통 버그 체크 0xC4입니다. 자세한 내용은 Debugging Bug Check 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION버그 검사 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION를 참조하세요.

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

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

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

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.

다음 단계

드라이버 검증 도구의 기본 사항을 이해했으므로 다음 관련 항목을 살펴보세요.

도움말