DDI 使用の規則セット (NDIS)
これらのルールを使用して、ドライバーが KMDF DDI を正しく使用していることを確認します。
このセクションの内容
トピック | 説明 |
---|---|
Init_DeRegisterInterrupt ルールでは、 MPInitilize 中に NdisMRegisterInterruptEx が少なくとも 1 回呼び出される場合、MPHaltExで、 NdisMDeregisterInterruptEx を少なくとも 1 回呼び出す必要があります。 |
|
Init_NdisAllocateIoWorkItemルールは、少なくとも1回MiniportInitializeEx中にNdisAllocateIoWorkItemが呼び出された場合、NdisFreeIoWorkItem関数が実行されることを規定していますInit_NdisAllocateIoWorkItem ルールは、 NdisAllocateIoWorkItem 少なくとも1回 MiniportInitializeEx, 中に NdisFreeIoWorkItem が呼び出された場合、NdisFreeIoWorkItem関数が実行されることを規定しています。
|
|
Init_RegisterInterrupt ルールでは、初期化プロセス中またはミニポート ドライバーの停止中に問題が発生した場合に、通常は初期化中に発生する割り込みの登録を元に戻す必要があります。 MiniportInitializeEx 中に NdisMRegisterInterruptEx が少なくとも 1 回呼び出される場合は、 MiniportHaltEx で NdisMDeregisterInterruptEx 関数を少なくとも 1 回呼び出す必要があります。 |
|
Init_RegisterSG ルールでは、初期化プロセス中またはミニポート ドライバーの停止中に問題が発生した場合に、通常は初期化中に発生する スキャッター/ギャザー (SG) リストの登録を元に戻す必要があります。 MiniportInitializeEx 中に NdisMRegisterScatterGatherDma が少なくとも 1 回呼び出される場合は、MiniportHaltEx で NdisMDeregisterScatterGatherDma 関数を少なくとも 1 回呼び出す必要があります。 |
|
フィルター ドライバーは、その FilterDriverUnload ルーチンから NdisFDeregisterFilterDriver を呼び出す必要があります。 |
|
NdisMDeregisterInterruptEx がコントロールを返した後は、ミニポート ドライバーが NdisMSynchronizeWithInterruptEx 関数を呼び出せなくなります。 |
|
NullCheck ルールは、ドライバー コード内の NULL 値が後でドライバーで逆参照されないことを確認します。 次のいずれかの条件に該当する場合、このルールは欠陥を報告します。
NullCheck ルール違反では、最も関連性の高いコード ステートメントがトレース ツリー ウィンドウで強調表示されます。 レポート出力の操作の詳細については、「静的ドライバー検証ツールのレポート」および「トレース ビューアーの概要」を参照してください。 |
DDI 使用量ルール セットを選択するには
Microsoft Visual Studio でドライバー プロジェクト (.vcxProj) を選択します。 Driver メニューから Launch Static Driver Verifier… をクリックします。
ルール タブをクリックします。 ルール セット で、 DDIUsage を選択します。
Visual Studio の開発者コマンド プロンプト ウィンドウから既定のルール セットを選択するには、 /check オプションで DDIUsage.sdv を指定します。 次に例を示します。
msbuild /t:sdv /p:Inputs="/check:DDIUsage.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
詳細については、「静的ドライバー検証ツールを使用して、ドライバーの欠陥を検出する」と「静的ドライバー検証ツールコマンド (MSBuild)」を参照してください。