경고 규칙 집합(WDM)

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

섹션 내용

항목 설명

CheckDeviceObjectFlags

CheckDeviceObjectFlags 규칙은 버스 드라이버가 DO_POWER_PAGABLE 및 DO_POWER_INRUSH 대한 디바이스 개체 플래그가 FDO 및 자식 PDO에 대해 일관되게 설정되어 있는지 확인해야 한다고 지정합니다. 이 규칙은 버스 드라이버에만 적용됩니다.

CompletionEventChecking

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

DeleteDevice

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

MultRemoveLock

MultRemoveLock 규칙은 IoAcquireRemoveLock이 하나의 고유한 Remove Lock으로만 호출되도록 확인합니다. 경고 규칙입니다.

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 개발자 명령 프롬프트 창에서 기본 규칙 집합을 선택하려면 /check 옵션을 사용하여 Warning.sdv를 지정합니다. 예를 들어:

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

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