Share via


드라이버 패키지 프로젝트에 대한 드라이버 검증 도구 속성

드라이버 검증 도구는 드라이버 테스트의 효율성을 향상하는 런타임 검증 도구입니다. 테스트를 위해 드라이버를 배포할 때 모든 테스트 컴퓨터에서 실행되도록 드라이버 검증 도구를 활성화하고 구성할 수 있습니다.

원격 테스트 컴퓨터에서 드라이버 검증 도구를 사용할 경우 항상 테스트 컴퓨터와의 커널 모드 디버깅 연결을 설정해야 합니다. 대상 컴퓨터 구성 및 디버그 케이블 설정에 대한 자세한 내용은 Visual Studio에서 커널 모드 디버깅 설정을 참조하세요.

드라이버 패키지 프로젝트에 대한 드라이버 검증 도구 속성 설정

  1. 드라이버 패키지의 속성 페이지를 엽니다. 솔루션 탐색기에서 드라이버 패키지 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
  2. 드라이버 패키지의 속성 페이지에서 구성 속성, 드라이버 설치, 드라이버 검증을 차례로 클릭합니다.
  3. Enable Driver Verification(드라이버 검증 사용) 옵션을 선택합니다. 이 옵션을 선택하면 테스트 컴퓨터에서 확인할 드라이버를 선택하고 사용할 드라이버 검증 도구 옵션을 선택할 수 있습니다.

프로젝트 구성 및 플랫폼

구성 목록 및 플랫폼 목록을 사용하면 다른 프로젝트 구성 및 플랫폼 조합에 대해 다른 배포 설정을 적용할 수 있습니다. 예를 들면, 디버그 빌드에 대한 배포 옵션 집합을 사용하여 한 테스트 컴퓨터에 드라이버를 배포하고, 릴리스 빌드에 대한 배포 옵션을 사용하여 다른 테스트 컴퓨터에 드라이버를 배포할 수 있습니다.

드라이버 검증 도구 사용

컴퓨터의 모든 드라이버 또는 지정된 드라이버 목록에 대해, 또는 드라이버 프로젝트에 대해서만 테스트 컴퓨터에서 드라이버 검증 도구를 사용할 수 있습니다. 예를 들면, 특정 장치의 스택에서 드라이버 집합에 대해 드라이버 검증 도구를 사용할 수 있습니다.

드라이버 검증

테스트 컴퓨터에서 검증할 드라이버를 지정합니다.

  • 모든 드라이버
    드라이버 검증 도구가 원격 테스트 컴퓨터에 설치된 모든 드라이버를 검증하도록 지정합니다.

  • 프로젝트 출력
    드라이버 검증 도구가 원격 테스트 컴퓨터에 설치된 드라이버 프로젝트를 검증하도록 지정합니다. 이는 기본 옵션입니다.

  • 드라이버 목록
    드라이버 검증 도구가 원격 테스트 컴퓨터에서 검증할 드라이버 또는 드라이버 목록을 지정합니다. 예를 들면, 특정 장치와 연결된 모든 드라이버 목록을 지정할 수 있습니다. 이진 이름(예: Driver.sys)을 기준으로 드라이버를 지정합니다. 드라이버 목록을 구분하려면 세미콜론을 사용합니다. n*.sys 같은 와일드카드 값은 지원되지 않습니다.

드라이버 검증 도구 표준 플래그

테스트 컴퓨터에 다음 드라이버 검증 도구 옵션을 구성할 수 있습니다.

  • DDI 준수 검사 (Windows 8)

    이 옵션이 활성 상태이면 드라이버 검증 도구는 운영 체제의 커널 인터페이스와 드라이버 간의 적절한 상호 작용을 확인하는 DDI(장치 드라이버 인터페이스) 집합을 적용합니다.

  • 교착 상태 감지

    이 옵션이 활성 상태이면 드라이버 검증 도구는 드라이버의 스핀 잠금, 뮤텍스 및 빠른 뮤텍스 사용을 모니터링합니다. 이를 통해 드라이버의 코드에 특정 지점에서 교착 상태를 초래하는 잠재적인 문제가 있는지 감지합니다.

  • DMA 검증

    이 옵션이 활성 상태이면 드라이버 검증 도구는 드라이버의 DMA(직접 메모리 액세스) 루틴 사용을 모니터링합니다. 이를 통해 DMA 버퍼, 어댑터 및 맵 레지스터의 부적절한 사용을 감지합니다.

  • IRQL 강제 검사

    이 옵션이 활성화되면 드라이버 검증 도구는 페이징 가능한 코드를 무효화하여 드라이버에 매우 큰 메모리 압력을 가합니다. 드라이버가 잘못된 IRQL에서 또는 스핀 잠금을 유지하는 동안 페이징 메모리에 액세스하려고 시도하면 드라이버 검증 도구는 이 동작을 감지합니다.

  • I/O 검증

    이 옵션이 활성 상태이면 드라이버 검증 도구는 특수 풀에서 드라이버의 IRP(인터럽트 요청 패킷)를 할당하고, 드라이버의 I/O 처리를 모니터링합니다. 이를 통해 잘못되거나 일관되지 않은 I/O 루틴 사용을 감지합니다. 또한 드라이버 검증 도구는 여러 I/O 관리자 루틴의 호출을 모니터링하고 PnP(플러그 앤 플레이) IRP, 전원 IRP 및 WMI IRP의 부하 테스트를 수행합니다.

  • 기타 검사

    이 옵션이 활성 상태이면 드라이버 검증 도구는 해제된 메모리를 잘못 처리하는 것과 같이, 드라이버 크래시의 일반적인 원인을 찾습니다.

  • 풀 추적

    이 옵션이 활성 상태이면 드라이버 검증 도구는 드라이버가 언로드될 때 모든 메모리 할당을 해제했는지 확인합니다. 이를 통해 메모리 누수를 감지합니다.

  • 보안 검사

    이 옵션이 활성 상태이면 드라이버 검증 도구는 보안을 취약하게 만들 수 있는 일반적인 오류(예: 커널 모드 루틴에 의한 사용자 모드 주소 참조)를 찾습니다.

  • 특수 풀 검사

    이 옵션이 활성 상태이면 드라이버 검증 도구는 드라이버 메모리 요청의 대부분을 특수 풀에서 할당합니다. 이 특수 풀은 메모리 오버런, 메모리 언더런 및 해제 후 액세스되는 메모리에 대해 모니터링됩니다.

드라이버 검증 도구 시나리오별 설정

  • 리소스 부족 시뮬레이션

    이 옵션이 활성 상태이면 드라이버 검증 도구는 풀 할당 요청 및 기타 리소스 요청을 임의로 실패하게 합니다. 그런 다음 이러한 할당 오류를 시스템에 주입하여 드라이버가 리소스 부족 상황에 대처하는 능력을 테스트합니다.

  • 보류 중인 I/O 요청 적용

    이 옵션이 활성 상태이면 드라이버 검증 도구는 IoCallDriver에 대한 임의 호출에 STATUS_PENDING을 반환하여 STATUS_PENDING 반환 값에 대한 드라이버의 응답을 테스트합니다.

  • IRP 로깅

    이 옵션이 활성 상태이면 드라이버 검증 도구는 드라이버의 IRP 사용을 모니터링하고 IRP 사용 로그를 만듭니다.

  • 고정 MDL 스택 검사 (Windows 8)

    고정 MDL 스택 검사 옵션은 드라이버가 드라이버 스택에서 고정 MDL 버퍼를 어떻게 처리하는지 모니터링합니다. 드라이버 검증 도구는 고정 MDL 버퍼의 잘못된 수정을 감지할 수 있습니다. 이 옵션을 사용하려면 하나 이상의 드라이버에서 I/O 검증이 사용되도록 설정해야 합니다.

  • 고정 MDL 드라이버 검사 (Windows 8)

    고정 MDL 드라이버 검사 옵션은 드라이버가 드라이버별 기반으로 고정 MDL 버퍼를 어떻게 처리하는지 모니터링합니다. 이 옵션은 고정 MDL 버퍼의 잘못된 수정을 감지할 수 있습니다. 이 옵션을 사용하려면 하나 이상의 드라이버에서 I/O 검증이 사용되도록 설정해야 합니다.

  • 전원 프레임워크 지연 퍼지 테스트 (Windows 8)

    이 옵션이 활성 상태이면 드라이버 검증 도구는 드라이버의 동시 오류를 제거하는 데 도움을 주기 위해 스레드 일정을 임의로 정합니다.

  • 스택 기반 오류 주입 (Windows 8)

    스택 기반 오류 주입 옵션은 커널 모드 드라이버에 리소스 오류를 주입합니다. 이 옵션은 특수 드라이버인 KmAutoFail.sys와 드라이버 검증 도구를 함께 사용하여 드라이버 오류 처리 경로에 침투합니다.

    참고  스택 기반 오류 주입리소스 부족 시뮬레이션과 결합할 수 없습니다.

     

I/O 검증이 필요한 드라이버 검증 도구 옵션

먼저 I/O 검증을 사용하도록 설정해야 하는 4가지 옵션이 있습니다. I/O 검증을 사용하도록 설정되어 있지 않으면 이들 옵션은 사용할 수 없습니다.

관련 항목

드라이버 검증 도구

Visual Studio를 사용하여 런타임에 드라이버를 테스트하는 방법

Visual Studio에서 커널 모드 디버깅 설정

테스트 컴퓨터에 드라이버 배포