次の方法で共有


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

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

このセクションの内容

裁判官 説明

ParentObjectCheckLock

ParentObjectCheckLock ルールは、ドライバーが親オブジェクトを設定する WdfWaitLockCreateWdfSpinLockCreate を呼び出す必要があることを指定します。

ReqSendWhileSpinlock

ReqSendWhileSpinlock ルールは、ドライバーがスピンロックを保持している間は要求が送信されないというルールを指定します。

Spinlock

Spinlock ルールは、 KeAcquireSpinLock または KeAcquireSpinLockRaiseToDpcKeReleaseSpinlock の呼び出しを厳密な代替で使用することを指定します。

SpinlockDpc

SpinlockDpc ルールは、 KeAcquireSpinLock または KeAcquireSpinLockRaiseToDpcKeReleaseSpinlock の呼び出しを厳密な代替で使用することを指定します。

SpinlockRelease

SpinlockRelease ルールでは、 KeAcquireSpinLockKeAcquireSpinLockRaiseToDpc、および KeReleaseSpinLock の呼び出しが、KMDF コールバック内でバランスのとれた方法で使用されるように指定されています。 KMDF コールバック ルーチンの最後に、ドライバーはスピン ロックを保持しないでください。

WdfInterruptLock

WdfInterruptLock 規則は、 WdfInterruptAcquireLock メソッドの呼び出しが、 WdfInterruptReleaseLock の呼び出しと共に厳密な代替で使用されることを指定します。 さらに、KMDF コールバック ルーチンの最後に、ドライバーは、 WdfInterruptAcquireLock への以前の呼び出しによって取得されたフレームワーク スピン ロック オブジェクトを保持しないでください。

WdfInterruptLockRelease

WdfInterruptLockRelease 規則は、 WdfInterruptAcquireLockWdfInterruptReleaseLock への呼び出しが、KMDF コールバック ルーチン内でバランスのとれた方法で使用されることを指定します。 さらに、KMDF コールバック ルーチンの最後に、ドライバーは、 WdfInterruptAcquireLock への以前の呼び出しによって取得されたフレームワーク スピン ロック オブジェクトを保持しないでください。

WdfSpinlock

WdfSpinlock 規則は、 WdfSpinLockAcquire メソッドの呼び出しが WdfSpinlockRelease での厳密な代替で使用されることを指定します。 さらに、KMDF コールバック ルーチンの最後に、ドライバーは、 WdfSpinLockAcquire への以前の呼び出しによって取得されたフレームワーク スピン ロック オブジェクトを保持しないでください。

WdfSpinlockRelease

WdfSpinlockRelease ルールは、 WdfSpinLockAcquireWdfSpinlockRelease への呼び出しが、KMDF イベント コールバック関数内でバランスのとれた方法で使用されるように指定します。 KMDF イベント コールバック関数が返されるときに、ドライバーは、 WdfSpinLockAcquire への以前の呼び出しによって取得されたフレームワークスピンロック オブジェクトを保持しないでください。

WdfWaitlock

WdfWaitlock 規則は、 WdfWaitLockAcquire への呼び出しが WdfWaitlockRelease での厳密な代替で使用されることを指定します。 KMDF イベント コールバック関数が返されるときに、ドライバーは、 WdfWaitLockAcquire への以前の呼び出しによって取得されたフレームワークスピンロック オブジェクトを保持しないでください。

WdfWaitlockRelease

WdfWaitlockRelease ルールは、 WdfWaitLockAcquireWdfWaitLockRelease への呼び出しが、KMDF イベント コールバック関数内でバランスのとれた方法で使用されるように指定します。 KMDF イベント コールバック関数が返されるときに、ドライバーは、 WdfWaitLockAcquire への以前の呼び出しによって取得されたフレームワークスピンロック オブジェクトを保持しないでください。

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