次の方法で共有


DDI 使用の規則セット (NDIS)

これらのルールを使用して、ドライバーが KMDF DDI を正しく使用していることを確認します。

このセクションの内容

トピック 説明

Init_DeRegisterInterrupt

Init_DeRegisterInterrupt ルールでは、 MPInitilize 中に NdisMRegisterInterruptEx が少なくとも 1 回呼び出される場合、MPHaltExで、 NdisMDeregisterInterruptEx を少なくとも 1 回呼び出す必要があります。

Init_NdisAllocateIoWorkItem

Init_NdisAllocateIoWorkItemルールは、少なくとも1回MiniportInitializeEx中にNdisAllocateIoWorkItemが呼び出された場合、NdisFreeIoWorkItem関数が実行されることを規定していますInit_NdisAllocateIoWorkItem ルールは、 NdisAllocateIoWorkItem 少なくとも1回 MiniportInitializeEx, 中に NdisFreeIoWorkItem が呼び出された場合、NdisFreeIoWorkItem関数が実行されることを規定しています。

  • - もし、 MiniportInitializeEx が成功した場合、MPHaltEx で少なくとも 1 回呼び出す必要があります。
  • - もし、 MiniportInitializeEx が失敗した場合、 MiniportInitializeEx で呼び出される必要があります。

Init_RegisterInterrupt

Init_RegisterInterrupt ルールでは、初期化プロセス中またはミニポート ドライバーの停止中に問題が発生した場合に、通常は初期化中に発生する割り込みの登録を元に戻す必要があります。

MiniportInitializeEx 中に NdisMRegisterInterruptEx が少なくとも 1 回呼び出される場合は、 MiniportHaltExNdisMDeregisterInterruptEx 関数を少なくとも 1 回呼び出す必要があります。

Init_RegisterSG

Init_RegisterSG ルールでは、初期化プロセス中またはミニポート ドライバーの停止中に問題が発生した場合に、通常は初期化中に発生する スキャッター/ギャザー (SG) リストの登録を元に戻す必要があります。

MiniportInitializeEx 中に NdisMRegisterScatterGatherDma が少なくとも 1 回呼び出される場合は、MiniportHaltExNdisMDeregisterScatterGatherDma 関数を少なくとも 1 回呼び出す必要があります。

NdisFDeregisterFilterDriver

フィルター ドライバーは、その FilterDriverUnload ルーチンから NdisFDeregisterFilterDriver を呼び出す必要があります。

NdisMDeregisterInterruptEx

NdisMDeregisterInterruptEx がコントロールを返した後は、ミニポート ドライバーが NdisMSynchronizeWithInterruptEx 関数を呼び出せなくなります。

NullCheck

NullCheck ルールは、ドライバー コード内の NULL 値が後でドライバーで逆参照されないことを確認します。 次のいずれかの条件に該当する場合、このルールは欠陥を報告します。

  • 後で逆参照される NULL の代入がある。
  • 後で逆参照される NULL である可能性があるドライバーのプロシージャにはグローバル/パラメーターがあり、ポインターの初期値が NULL である可能性があることを示唆する明示的なチェックがドライバーにある。

NullCheck ルール違反では、最も関連性の高いコード ステートメントがトレース ツリー ウィンドウで強調表示されます。 レポート出力の操作の詳細については、「静的ドライバー検証ツールのレポート」および「トレース ビューアーの概要」を参照してください。

DDI 使用量ルール セットを選択するには

  1. Microsoft Visual Studio でドライバー プロジェクト (.vcxProj) を選択します。 Driver メニューから Launch Static Driver Verifier… をクリックします。

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

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

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

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