ロックの規則セット (KMDF)
これらの規則を使用して、ドライバーが共有リソースを正しく管理していることを確認します。
このセクションの内容
裁判官 | 説明 |
---|---|
ParentObjectCheckLock ルールは、ドライバーが親オブジェクトを設定する WdfWaitLockCreate と WdfSpinLockCreate を呼び出す必要があることを指定します。 |
|
ReqSendWhileSpinlock ルールは、ドライバーがスピンロックを保持している間は要求が送信されないというルールを指定します。 |
|
Spinlock ルールは、 KeAcquireSpinLock または KeAcquireSpinLockRaiseToDpc と KeReleaseSpinlock の呼び出しを厳密な代替で使用することを指定します。 |
|
SpinlockDpc ルールは、 KeAcquireSpinLock または KeAcquireSpinLockRaiseToDpc と KeReleaseSpinlock の呼び出しを厳密な代替で使用することを指定します。 |
|
SpinlockRelease ルールでは、 KeAcquireSpinLock、 KeAcquireSpinLockRaiseToDpc、および KeReleaseSpinLock の呼び出しが、KMDF コールバック内でバランスのとれた方法で使用されるように指定されています。 KMDF コールバック ルーチンの最後に、ドライバーはスピン ロックを保持しないでください。 |
|
WdfInterruptLock 規則は、 WdfInterruptAcquireLock メソッドの呼び出しが、 WdfInterruptReleaseLock の呼び出しと共に厳密な代替で使用されることを指定します。 さらに、KMDF コールバック ルーチンの最後に、ドライバーは、 WdfInterruptAcquireLock への以前の呼び出しによって取得されたフレームワーク スピン ロック オブジェクトを保持しないでください。 |
|
WdfInterruptLockRelease 規則は、 WdfInterruptAcquireLock と WdfInterruptReleaseLock への呼び出しが、KMDF コールバック ルーチン内でバランスのとれた方法で使用されることを指定します。 さらに、KMDF コールバック ルーチンの最後に、ドライバーは、 WdfInterruptAcquireLock への以前の呼び出しによって取得されたフレームワーク スピン ロック オブジェクトを保持しないでください。 |
|
WdfSpinlock 規則は、 WdfSpinLockAcquire メソッドの呼び出しが WdfSpinlockRelease での厳密な代替で使用されることを指定します。 さらに、KMDF コールバック ルーチンの最後に、ドライバーは、 WdfSpinLockAcquire への以前の呼び出しによって取得されたフレームワーク スピン ロック オブジェクトを保持しないでください。 |
|
WdfSpinlockRelease ルールは、 WdfSpinLockAcquire と WdfSpinlockRelease への呼び出しが、KMDF イベント コールバック関数内でバランスのとれた方法で使用されるように指定します。 KMDF イベント コールバック関数が返されるときに、ドライバーは、 WdfSpinLockAcquire への以前の呼び出しによって取得されたフレームワークスピンロック オブジェクトを保持しないでください。 |
|
WdfWaitlock 規則は、 WdfWaitLockAcquire への呼び出しが WdfWaitlockRelease での厳密な代替で使用されることを指定します。 KMDF イベント コールバック関数が返されるときに、ドライバーは、 WdfWaitLockAcquire への以前の呼び出しによって取得されたフレームワークスピンロック オブジェクトを保持しないでください。 |
|
WdfWaitlockRelease ルールは、 WdfWaitLockAcquire と WdfWaitLockRelease への呼び出しが、KMDF イベント コールバック関数内でバランスのとれた方法で使用されるように指定します。 KMDF イベント コールバック関数が返されるときに、ドライバーは、 WdfWaitLockAcquire への以前の呼び出しによって取得されたフレームワークスピンロック オブジェクトを保持しないでください。 |
Irql ルール セットをロックするには
Microsoft Visual Studio でドライバー プロジェクト (.vcxProj) を選択します。 [ドライバー] メニューから [静的ドライバー検証ツールの起動...] をクリックします。
[ルール] タブをクリックします。 [ルール セット] で、 [Locking] を選択します。
Visual Studio の開発者コマンド プロンプト ウィンドウから既定のルール セットを選択するには、/check オプションで Locking.sdv を指定します。 次に例を示します。
msbuild /t:sdv /p:Inputs="/check:Locking.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
詳細については、「静的ドライバー検証ツールを使用して、ドライバーの欠陥を検出する」と「静的ドライバー検証ツールコマンド (MSBuild)」を参照してください。