次の方法で共有


IrpProcessing の規則セット (KMDF)

これらのルールを使用して、ドライバーが I/O 要求パケット (IRP) を正しく処理するかを確認します。

このセクションの内容

トピック 説明

FwdIrpToIoQueueValid

ルール FwdIrpToIoQueueValid は、ドライバーが、EvtDeviceWdmIrpDispatch コールバックまたは EvtDeviceWdmIrpPreprocess コールバックから WdfDeviceWdmDispatchIrpToIoQueue メソッドを使用して、I/O キューに IRP を送信するよう指定します。

SetCompletionRoutineFromDispatch

SetCompletionRoutineFromDispatch ルールは、ドライバーが EvtDeviceWdmIrpDispatch コールバック関数から IRP の完了ルーチンを指定しないことを検証します。

MiniportOnlyWdmDevice

MiniportOnlyWdmDevice ルールは、WDF ドライバーが、ベア WDM デバイス オブジェクトを作成するための IoCreateDeviceIoCreateDeviceSecure 関数を使用しないように指定します。 このため、誰かが WDM デバイスに IRP を送信しようとすると、コンピューターがクラッシュします。 デバイスの IRP ディスパッチ エントリは WDF 固有のエントリに設定されているが、フレームワークが WDF デバイスを作成していないためです。 ただし、ミニポート ドライバーは、ドライバー ディスパッチ エントリ ポイントが設定されていないため、DDI を使用できます。

IrpProcessing ルールセットを選択するには

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

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

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

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

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