鎖定規則集 (KMDF)

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

本節內容

主題 描述

ParentObjectCheckLock

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

ReqSendWhileSpinlock

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

微調鎖定

Spinlock 規則會指定在嚴格交替中使用對 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 和 KeReleaseSpinlock 的呼叫。

SpinlockDpc

SpinlockDpc 規則會指定在嚴格交替中使用對 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 和 KeReleaseSpinlock 的呼叫。

SpinlockRelease

SpinlockRelease 規則會指定在 KMDF 回呼內以平衡的方式使用對 KeAcquireSpinLock、KeAcquireSpinLockRaiseToDpc 和 KeReleaseSpinLock 的呼叫。 在任何 KMDF 回呼例程結束時,驅動程式不應該保留微調鎖定。

WdfInterruptLock

WdfInterruptLock 規則會指定對 WdfInterruptAcquireLock 方法的呼叫用於嚴格交替與 WdfInterruptReleaseLock 的呼叫。 此外,在任何 KMDF 回呼例程結束時,驅動程式不應該保存架構微調鎖定物件,由先前呼叫 WdfInterruptAcquireLock 取得。

WdfInterruptLockRelease

WdfInterruptLockRelease 規則指定呼叫 WdfInterruptAcquireLock 和 WdfInterruptReleaseLock 會以平衡的方式在 KMDF 回呼例程內使用。 在任何 KMDF 回呼例程結束時,驅動程式不應該保存先前呼叫 WdfInterruptAcquireLock 取得的架構微調鎖定物件。

WdfSpinlock

WdfSpinlock 規則會指定對 WdfSpinLockAcquire 方法的呼叫會與 WdfSpinlockRelease 嚴格交替使用。 在任何 KMDF 回呼例程結束時,驅動程式不應該保存先前呼叫 WdfSpinLockAcquire 取得的架構微調鎖定物件。

WdfSpinlockRelease

WdfSpinlockRelease 規則會指定呼叫 WdfSpinLockAcquire 和 WdfSpinlockRelease 是在 KMDF 事件回呼函式內以平衡的方式使用。 當 KMDF 事件回呼函式傳回時,驅動程式不應該保存先前呼叫 WdfSpinLockAcquire 取得的架構微調鎖定物件。

WdfWaitlock

WdfWaitlock 規則指定對 WdfWaitLockAcquire 的呼叫會與 WdfWaitlockRelease 搭配嚴格交替使用。 當 KMDF 事件回呼函式傳回時,驅動程式不應該保存先前呼叫 WdfWaitLockAcquire 取得的架構微調鎖定物件。

WdfWaitlockRelease

WdfWaitlockRelease 規則指定呼叫 WdfWaitLockAcquire 和 WdfWaitLockRelease 會在 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) 。