次の方法で共有


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

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

このセクションの内容

裁判官 説明

CancelTimerObject

CancelTimerObject ルールは、 NdisSetTimerObjectNdisCancelTimerObject を別の順序で呼び出すように指定します。 最終的な目標は、 MiniportHaltEx が終了時に、すべてのタイマー がキャンセルされていることを確認することです。

MiniportPause_Return

MiniportPause_Return ルールでは、 MiniportPause コールバック関数は 一時停止操作が完了した場合には NDIS_STATUS_SUCCESS のみを返し、ミニポート ドライバーが一時停止状態の場合には NDIS_STATUS_PENDING のみを返す必要があります。 その他の返された状態は無効です。

NdisOpenConfigurationEx

このルールでは、 NdisOpenConfigurationEx および NdisCloseConfiguration が別の順序で呼び出されることを確認します。 最終的な目標は、 MiniportHaltEx の終了時に構成ハンドルが閉じられていることを確認することです。

NdisQueryBindInstanceName

NdisQueryBindInstanceName は、フレンドリ名を指定する文字列にメモリを割り当てます。 呼び出し元がこのメモリの使用を完了した後、呼び出し元は NdisFreeMemory 関数を呼び出してメモリをリリースする必要があります。

NdisReEnumerateProtocolBindings

プロトコル ドライバーは、 ProtocolBindAdapterEx または ProtocolUnbindAdapterEx 関数のコンテキスト内から NdisReEnumerateProtocolBindings を呼び出す必要があります。 また、 ProtocolNetPnPEventProtocolBindingContext パラメーターが NULL ではない場合、プロトコル ドライバーは ProtocolNetPnPEvent 関数のコンテキスト内から NdisReEnumerateProtocolBindings を呼び出す必要があります。 ただし、 ProtocolBindingContext が NULL の場合、プロトコル ドライバーは ProtocolNetPnPEvent のコンテキスト内から NdisReEnumerateProtocolBindings を呼び出すことができます。 NULL ProtocolBindingContext 値では、イベントがすべてのバインドに適用されます。

PeriodicTimer

PeriodicTimer ルールでは、 NdisSetTimerObject 関数の MillisecondsPeriod パラメーターで 0 以外の値が指定されている場合、 NdisCancelTimerObject の呼び出し元が IRQL = PASSIVE_LEVEL で実行されている必要があります。 NdisSetTimerObject 関数の MillisecondsPeriod パラメーターが 0 である場合、 NdisCancelTimerObject の呼び出し元は IRQL <= DISPATCH_LEVELで実行できます。

WriteErrorLog

WriteErrorLog 規則は、 NdisMAllocateSharedMemory 関数が MiniportInitializeEx 関数で呼び出された場合、割り当てが失敗した場合に、ドライバーも NdisWriteErrorLogEntry を呼び出す必要があることを指定します。

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

  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)」を参照してください。