次の方法で共有


ロックの規則セット (NDIS)

これらの規則を使用して、ドライバーが共有リソースを正しく管理していることを確認します。

このセクションの内容

裁判官 説明

SpinLock

SpinLock 規則は、NDIS スピン ロック インターフェイスの正しい使用を確認します。 この規則では、 NdisAcquireSpinLock への呼び出しは、SpinLock がロック解除状態の場合にのみ行われるよう指定します。 この規則では、ミニポート ハンドラー ルーチンが終了する前に SpinLock が解放されていることも確認します。

SpinLockBalanced

SpinLockBalanced ルールは、SpinLock を取得する関数の呼び出しの数が、同じ SpinLock を解放する関数の呼び出しの数と等しいことを確認します。

SpinLockDpr

SpinLockDpr 規則は、NDIS スピン ロック インターフェイスの正しい使用を確認します。

この規則では、 NdisDprAcquireSpinLock への呼び出しは、SpinLock がロック解除状態の場合にのみ行われるよう指定します。 この規則では、ミニポート ハンドラー ルーチンが終了する前に Spin Lock が解放されていることも確認します。

SpinLockDprRelease

SpinLockDprRelease ルールは、 NdisAcquireSpinLock または NdisDprAcquireSpinLock への呼び出しが、SpinLock が "ロック解除" 状態である場合にのみ呼び出されることを確認します。 この規則は、ミニポート ハンドラー ルーチンを終了する前に SpinLock がリリースされたことをチェックします。

SpinLockRelease

SpinLockRelease ルールは、ドライバーが最初に取得せずにスピン ロック (NdisReleaseSpinLock) を解放しないように指定します。

Irql ルール セットをロックするには

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

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

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

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

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