WDM) (鎖定規則集

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

本節內容

主題 描述

CancelSpinLock

CancelSpinLock 規則會指定驅動程式在呼叫 IoReleaseCancelSpinLock 之前先呼叫 IoAcquireCancelSpinLock,而且驅動程式會在後續呼叫 IoAcquireCancelSpinLock 之前呼叫 IoReleaseCancelSpinLock。

CancelSpinlockRelease

CancelSpinlockRelease 規則指定對 IoAcquireCancelSpinLock 和 IoReleaseCancelSpinLock 的呼叫會用於嚴格替代。 也就是說,每次呼叫 IoAcquireCancelSpinLock 都必須有 對 IoReleaseCancelSpinLock 的對應呼叫。

CriticalRegions

CriticalRegions 規則會指定驅動程式必須先呼叫 KeEnterCriticalRegion,再呼叫 KeLeaveCriticalRegion,而且驅動程式會在任何後續呼叫 KeEnterCriticalRegion 之前呼叫 KeLeaveCriticalRegion。 允許 (巢狀呼叫。)

ExclusiveResourceAccess

ExclusiveResourceAccess 規則會指定驅動程式在呼叫 ExReleaseResourceLite 或 ExReleaseResourceForThreadLite 之前先呼叫 ExAcquireresourceExclusiveLite,並指定驅動程式在任何後續呼叫 ExAcquiresourceExclusiveLite 之前呼叫 ExAcquireaseResourceForThreadLite。

GuardedRegions

GuardedRegions 規則會確認對 KeEnterGuardedRegion 和 KeLeaveGuardedRegion 的呼叫會用於嚴格替代。

QueuedSpinLock

QueuedSpinLock 規則會指定驅動程式在呼叫 KeReleaseInStackQueuedSpinLock 之前先呼叫 KeAcquireInStackInStackQueuedSpinLock,而且驅動程式會在任何後續呼叫 KeAcquireInStackQueuedSpinLock 之前呼叫 KeReleaseInStackQueuedSpinLock。

QueuedSpinLockRelease

QueuedSpinLockRelease 規則會指定對 KeAcquireInStackQueuedSpinLock 和 KeReleaseInStackQueuedSpinLock 的呼叫會用於嚴格交替。

SpinLock

SpinLock 規則會指定,在呼叫 KeAcquireSpinLock 之後,驅動程式會在後續呼叫 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 之前呼叫 KeReleaseSpinLock。

SpinLockDpc

SpinLockDpc 規則指定必須以嚴格替代方式呼叫 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 和 KeReleaseSpinLock。 也就是說,在呼叫 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 之後,驅動程式必須在後續呼叫 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 之前呼叫 KeReleaseSpinLock。

SpinlockRelease

SpinlockRelease 規則會指定對 KeReleaseSpinLock 的呼叫會與 KeAcquireSpinLock 和 KeAcquireSpinLockRaiseToDpc 嚴格交替。 也就是說,驅動程式必須在呼叫 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 之後呼叫 KeReleaseSpinLock,並在後續呼叫 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 之前呼叫 KeReleaseSpinLock。

SpinLockSafe

SpinLockSafe 規則指定在按住微調鎖定時,不會呼叫 IoStartNextPacket 和 IoCompleteRequest。

WithinCriticalRegion

WithinCriticalRegion 規則指定只有在呼叫 KeEnterCriticalRegion 以及呼叫 KeLeaveCriticalRegion 之前,驅動程式對特定同步處理函式的呼叫才會出現。

受影響的同步處理函式如下:

若要選取鎖定規則集

  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) 。