警告の規則セット (WDM)

これらの規則を使用して、ドライバーがさまざまなコンテキストで IRP を正しく処理できることを確認し、Microsoft が推奨するベスト プラクティスに従います。

このセクションの内容

裁判官 説明

CheckDeviceObjectFlags

CheckDeviceObjectFlags 規則は、バス ドライバーが、FDO と子 PDO に対して DO_POWER_PAGABLE および DO_POWER_INRUSH のデバイス オブジェクト フラグが一貫して設定されることをチェックする必要があることを指定します。 この規則は、バス ドライバーにのみ適用されます。

CompletionEventChecking

CompletionEventChecking ルールは、ドライバーが同じ IRP の完了ルーチンで IoMarkIrpPendingKeSetEvent を呼び出さないことを指定します。

DeleteDevice

DeleteDevice ルールは、 IoDeleteDevice の呼び出し後に DeviceObject を維持するために、ドライバーが I/O マネージャーまたは PnP マネージャーに依存しないように指定します。

MultRemoveLock

MultRemoveLock ルールは、 IoAcquireRemoveLock が一意の Remove Lock を 1 つだけ使用して呼び出されることを確認します。 これは警告ルールです。

PagedCode

PagesCode ルールは、IRQL <= APC_LEVEL で実行されている場合にのみドライバーが PAGED_CODE マクロを呼び出すことを指定します。

PagedCodeAtPowerTrans

PagesAtPowerTrans ルールは、ドライバーがシステム 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) を選択します。 Driver メニューから Launch Static Driver Verifier… をクリックします。

  2. [ルール] タブをクリックします。 [ルール セット] で、 警告 を選択します。

    Visual Studio の開発者コマンド プロンプト ウィンドウから既定のルール セットを選択するには、Warning オプションで Locking.sdv を指定します。 次に例を示します。

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

    詳細については、「静的ドライバー検証ツールを使用して、ドライバーの欠陥を検出する」と「静的ドライバー検証ツールコマンド (MSBuild)」を参照してください。