IrpProcessing の規則セット (KMDF)
これらのルールを使用して、ドライバーが I/O 要求パケット (IRP) を正しく処理するかを確認します。
このセクションの内容
トピック | 説明 |
---|---|
ルール FwdIrpToIoQueueValid は、ドライバーが、EvtDeviceWdmIrpDispatch コールバックまたは EvtDeviceWdmIrpPreprocess コールバックから WdfDeviceWdmDispatchIrpToIoQueue メソッドを使用して、I/O キューに IRP を送信するよう指定します。 |
|
SetCompletionRoutineFromDispatch ルールは、ドライバーが EvtDeviceWdmIrpDispatch コールバック関数から IRP の完了ルーチンを指定しないことを検証します。 |
|
MiniportOnlyWdmDevice ルールは、WDF ドライバーが、ベア WDM デバイス オブジェクトを作成するための IoCreateDevice と IoCreateDeviceSecure 関数を使用しないように指定します。 このため、誰かが WDM デバイスに IRP を送信しようとすると、コンピューターがクラッシュします。 デバイスの IRP ディスパッチ エントリは WDF 固有のエントリに設定されているが、フレームワークが WDF デバイスを作成していないためです。 ただし、ミニポート ドライバーは、ドライバー ディスパッチ エントリ ポイントが設定されていないため、DDI を使用できます。 |
IrpProcessing ルールセットを選択するには
Microsoft Visual Studio でドライバー プロジェクト (.vcxProj) を選択します。 [ドライバー] メニューから [静的ドライバー検証ツールの起動...] をクリックします。
[ルール] タブをクリックします。[ルール セット] で、[IrpProcessing] を選択します。
Visual Studio の開発者コマンド プロンプト ウィンドウから既定のルール セットを選択するには、/check オプションで IrpProcessing.sdv を指定します。 次に例を示します。
msbuild /t:sdv /p:Inputs="/check:IrpProcessing.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
詳細については、「静的ドライバー検証ツールを使用して、ドライバーの欠陥を検出する」と「静的ドライバー検証ツールコマンド (MSBuild)」をご参照ください。