共用方式為


鎖定規則集 (KMDF)

使用這些規則來確認您的驅動程式是否已正確管理共用資源。

本節內容

主題 描述

ParentObjectCheckLock

ParentObjectCheckLock 規則指定驅動程式應該呼叫 WdfWaitLockCreateWdfSpinLockCreate 設定父物件。

ReqSendWhileSpinlock

ReqSendWhileSpinlock 規則會指定驅動程式保留微調鎖定時不會傳送任何要求。

微調鎖定

Spinlock 規則會指定在嚴格交替中使用對 KeAcquireSpinLockKeAcquireSpinLockRaiseToDpcKeReleaseSpinlock 的呼叫。

SpinlockDpc

SpinlockDpc 規則會指定在嚴格交替中使用對 KeAcquireSpinLockKeAcquireSpinLockRaiseToDpcKeReleaseSpinlock 的呼叫。

SpinlockRelease

SpinlockRelease 規則會指定在 KMDF 回呼內以平衡的方式使用對 KeAcquireSpinLockKeAcquireSpinLockRaiseToDpcKeReleaseSpinLock 的呼叫。 在任何 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 取得的架構微調鎖定物件。

若要選取鎖定規則集

  1. 在 Microsoft Visual Studio 中選取驅動程式項目 (.vcxProj) 。 從 [ 驅動程式 ] 功能表中,按兩下 [ 啟動靜態驅動程序驗證程式...]。

  2. 按兩下 [ 規則] 索引標籤 。在 [規則集] 底下,選取 [ 鎖定]。

    若要從 Visual Studio 開發人員命令提示字元視窗中選取預設規則集,請使用 /check 選項指定 Locking.sdv。 例如:

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

    如需詳細資訊,請參閱 使用靜態驅動程式驗證器在驅動程式靜態驅動程式驗證器命令 中尋找瑕疵 (MSBuild) 。