다음을 통해 공유


VirtualStorport 규칙 집합(Storport)

이러한 규칙을 사용하여 드라이버가 Storport VMiniport(가상 미니포트) 드라이버에 특히 관심이 있는 DDI를 올바르게 호출했는지 확인합니다.

이 부분에서는

주제 설명

DoubleExFreePool

이 규칙은 드라이버가 동일한 풀 메모리 블록을 두 번 해제하려고 시도하지 않는지 확인합니다.

DoubleKeSetEvent

이 규칙은 KeSetEvent 가 동일한 이벤트 개체에서 두 번 호출되지 않는지 확인합니다. 동일한 이벤트 개체가 루틴에 전달되면 드라이버는 규칙에 실패합니다.

IoFreeIrp

이 규칙은 IoAllocateIrp 에 의해 할당된 IRP가 IoFreeIrp 에 의해 해제되거나 완료 루틴이 IoSetCompletionRoutine에 의해 설정되었는지 확인합니다.

StorPortVirtualDevice

이 규칙은 HwStorFindAdapter 루틴을 종료하면 storport(PORT_CONFIGURATION_INFORMATION) 구조체의 VirtualDevice 필드가 FALSE로 설정되었는지 확인합니다. 규칙은 실제 StorPort 미니포트에만 적용됩니다.

StorPortVirtualDevice2

이 규칙은 HwStorFindAdapter 루틴을 종료하면 storport(PORT_CONFIGURATION_INFORMATION) 구조체의 VirtualDevice 필드가 TRUE로 설정되었는지 확인합니다. 규칙은 가상 StorPort 미니포트에만 적용됩니다.

WithinCriticalRegion

이 규칙은 일반 커널 APC 배달을 사용하지 않도록 설정된 동안에만 드라이버의 특정 동기화 함수 호출이 수행되는지 확인합니다.

ZwRegistryCreate

이 규칙은 ZwCreateKey 로 만든 레지스트리 키에 대한 핸들이 이후에 다른 ZwXxx 루틴에서 올바르게 사용되는지 확인합니다. ZwOpenKey 루틴은 이미 열려 있는 핸들에서 호출해서는 안 됩니다. 열려 있지 않은 핸들에서는 ZwEnumerateKey, ZwEnumerateValueKey, ZwFlushKey, ZwQueryKey, ZwQueryValueKey, ZwSetValueKey, ZwCloseZwDeleteKey 루틴을 호출하면 안 됩니다. 반환하기 전에 핸들도 닫아야 합니다.

ZwRegistryOpen

이 규칙은 ZwOpenKey 를 통해 연 레지스트리 키에 대한 핸들이 이후에 다른 ZwXxx 루틴에서 올바르게 사용되는지 확인합니다. 열려 있지 않은 핸들에서는 ZwEnumerateKey, ZwEnumerateValueKey, ZwFlushKey, ZwQueryKey, ZwQueryValueKey, ZwSetValueKey, ZwCloseZwDeleteKey 루틴을 호출하면 안 됩니다. 반환하기 전에 핸들도 닫아야 합니다.

VirtualStorport 규칙 집합을 선택하려면

  1. Microsoft Visual Studio에서 드라이버 프로젝트(.vcxProj)를 선택합니다. 드라이버 메뉴에서 정적 드라이버 검증 도구 실행을 클릭합니다.

  2. 규칙 탭을 클릭합니다. 규칙 집합에서 VirtualStorport를 선택합니다.

    Visual Studio 개발자 명령 프롬프트 창에서 기본 규칙 집합을 선택하려면 /check 옵션을 사용하여 VirtualStorport.sdv를 지정합니다. 다음은 그 예입니다.

    msbuild /t:sdv /p:Inputs="/check:VirtualStorport.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    자세한 내용은 "정적 드라이버 검증 도구를 사용하여 드라이버의 결함을 찾는 방법""MSBuild의 정적 드라이버 검증 도구 명령"을 참조하세요.