その他の規則セット (WDM)

これらの規則を使用して、ドライバーがタイマー、一時停止操作、レジストリ キー、文字列、デバイス オブジェクト ポインターの適切な処理に関する一般的な要件のセットに正しく従っていることを確認します。

このセクションの内容

裁判官 説明

AddDevice

AddDevice 規則は、ドライバーの AddDevice ルーチンが IoCreateDevice を呼び出した後にのみ IoAttachDeviceToDeviceStack を呼び出す指定します。

DanglingDeviceObjectReference

DanglingDeviceObjectReference 規則は、ドライバーが IoGetAttachedDeviceReference が返したのと同じデバイス オブジェクト ポインターを使用して ObDereferenceObject を呼び出すように指定します。

PnpSameDeviceObject

PnpSameDeviceObject 規則は、ドライバーが有効なターゲット デバイス オブジェクトへのポインターを使用して IoAttachDeviceToDeviceStack を呼び出すを指定します。

TargetRelationNeedsRef

TargetRelationNeedsRef ルールは、 TargetDeviceRelation クエリを処理するときに、ドライバーの DispatchPnP ルーチンが次のいずれかの関数を呼び出して子デバイスの PDO を参照することを指定します。

UnSafeAllocatePool

UnSafeAllocatePool は、ドライバーがメモリの割り当てに非推奨の DDI を使用しないことをチェック重要なセキュリティ規則です。

ZwRegistryCreate

ZwRegistryCreate 規則では、 ZwCreateKey を呼び出した後、ドライバーは、レジストリ キーに対して開いているハンドルを保持している間 (つまり、 ZwClose または ZwDeleteKey を呼び出してレジストリ キーのハンドルを閉じるか削除する前) にのみ、次のレジストリ関数を呼び出すことができることを指定します。

ZwRegistryOpen

ZwRegistryOpen 規則では、 ZwOpenKey を呼び出した後、ドライバーは、開いているハンドルをレジストリ キーに保持している間のみ (つまり、 ZwClose または ZwDeleteKeyを呼び出す前) に次のレジストリ関数を呼び出します。

その他のルール セットを選択するには

  1. Microsoft Visual Studio でドライバー プロジェクト (.vcxProj) を選択します。 [ドライバー] メニューから [静的ドライバー検証ツールの起動...] をクリックします。

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

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

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

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