다음을 통해 공유


WDM(경고 규칙 집합)

이러한 규칙을 사용하여 드라이버가 다양한 컨텍스트에서 IRP를 올바르게 처리하고 Microsoft 권장 모범 사례를 따를 수 있는지 확인합니다.

섹션 내용

항목 Description

CheckDeviceObjectFlags

CheckDeviceObjectFlags 규칙은 버스 드라이버가 DO_POWER_PAGABLE 및 DO_POWER_INRUSH 디바이스 개체 플래그가 FDO 및 자식 PDO에 대해 일관되게 설정되도록 검사 지정합니다. 이 규칙은 버스 드라이버에만 적용됩니다.

CompletionEventChecking

CompletionEventChecking 규칙은 드라이버가 동일한 IRP에 대한 완료 루틴에서 IoMarkIrpPendingKeSetEvent를 호출하지 않도록 지정합니다.

DeleteDevice

DeleteDevice 규칙은 드라이버가 I/O 관리자 또는 PnP Manager를 사용하여 IoDeleteDevice를 호출한 후 DeviceObject를 활성 상태로 유지하도록 지정합니다.

MultRemoveLock

MultRemoveLock 규칙은 고유한 Remove Lock을 하나만 사용하여 IoAcquireRemoveLock이 호출되도록 확인합니다. 경고 규칙입니다.

PagedCode

PagedCode 규칙은 드라이버가 IRQL <= APC_LEVEL 실행 중인 경우에만 PAGED_CODE 매크로를 호출하는 것을 지정합니다.

PagedCodeAtPowerTrans

PagedCodeAtPowerTrans 규칙은 드라이버가 시스템 IRP_MJ_POWER Irp(IRP_MN_SET_POWER) 및 디바이스 IRP_MJ_POWER Irp(IRP_MN_SET_POWER)에 응답하는 동안 PAGED_CODE 호출하지 않도록 지정합니다.

ReservedDDIS

ReservedDDIs 규칙은 드라이버가 예약 함수를 호출하지 않는지 확인합니다.

경고 규칙 집합을 선택하려면

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

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

    Visual Studio 개발자 명령 프롬프트 창에서 기본 규칙 집합을 선택하려면 /검사 옵션을 사용하여 Warning.sdv를 지정합니다. 예를 들면 다음과 같습니다.

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

    자세한 내용은 정적 드라이버 검증 도구로 드라이버의 결함 찾기MSBuild(정적 드라이버 검증 도구 명령)를 참조하세요.