锁定规则集 (WDM)

使用这些规则验证驱动程序是否正确管理共享资源。

在本节中

主题 说明

CancelSpinLock

CancelSpinLock 规则指定驱动程序在调用 IoReleaseCancelSpinLock 之前调用 IoAcquireCancelSpinLock,并且驱动程序在后续调用 IoAcquireCancelSpinLock 之前调用 IoReleaseCancelSpinLock

CancelSpinlockRelease

CancelSpinlockRelease 规则指定以严格交替方式使用对 IoAcquireCancelSpinLockIoReleaseCancelSpinLock 的调用。 也就是说,每次调用 IoAcquireCancelSpinLock 都必须具有对 IoReleaseCancelSpinLock 的相应调用。

CriticalRegions

CriticalRegions 规则指定驱动程序必须在调用 KeLeaveCriticalRegion 之前调用 KeEnterCriticalRegion,并且驱动程序在对 KeEnterCriticalRegion 的任何后续调用之前调用 KeLeaveCriticalRegion。 允许 (嵌套调用。)

ExclusiveResourceAccess

ExclusiveResourceAccess 规则指定驱动程序在调用 ExReleaseResourceLite 或 ExReleaseResourceForThreadLite 之前调用 ExAcquireresourceExclusiveLite,并指定驱动程序在后续调用 ExAcquireResourceExclusiveLite 之前调用 ExReleaseResourceLite 或 ExReleaseResourceForThreadLite

GuardedRegions

GuardedRegions 规则验证对 KeEnterGuardedRegionKeLeaveGuardedRegion 的调用是否在严格交替中使用。

QueuedSpinLock

QueuedSpinLock 规则指定驱动程序在调用 KeReleaseInStackQueuedSpinLock 之前调用 KeAcquireInStackQueuedSpinLock,驱动程序在对 KeAcquireInStackQueuedSpinLock 的任何后续调用之前调用 KeReleaseInStackQueuedSpinLock

QueuedSpinLockRelease

QueuedSpinLockRelease 规则指定对 KeAcquireInStackQueuedSpinLockKeReleaseInStackQueuedSpinLock 的调用以严格替换方式使用。

SpinLock

SpinLock 规则指定,在调用 KeAcquireSpinLock 后,驱动程序在后续调用 KeAcquireSpinLockKeAcquireSpinLockRaiseToDpc 之前调用 KeReleaseSpinLock

SpinLockDpc

SpinLockDpc 规则指定必须严格替换调用 KeAcquireSpinLockKeAcquireSpinLockRaiseToDpcKeReleaseSpinLock。 也就是说,在调用 KeAcquireSpinLockKeAcquireSpinLockRaiseToDpc 后,驱动程序必须在后续调用 KeAcquireSpinLockKeAcquireSpinLockRaiseToDpc 之前调用 KeReleaseSpinLock

SpinlockRelease

SpinlockRelease 规则指定对 KeReleaseSpinLock 的调用与 KeAcquireSpinLock 和 KeAcquireSpinLockRaiseToDpc 严格交替进行。 也就是说,驱动程序必须在调用 KeAcquireSpinLockKeAcquireSpinLockRaiseToDpc 之后调用 KeAcquireSpinLockKeAcquireSpinLockRaiseToDpc 之后调用 KeReleaseSpinLock

SpinLockSafe

SpinLockSafe 规则指定在保留旋转锁时不调用 IoStartNextPacketIoCompleteRequest

WithinCriticalRegion

InCriticalRegion 规则指定驱动程序对特定同步函数的调用仅在调用 KeEnterCriticalRegion 之后和调用 KeLeaveCriticalRegion 之前显示。

受影响的同步函数如下:

选择锁定规则集

  1. 在 Microsoft Visual Studio 中选择驱动程序项目 (.vcxProj) 。 在“ 驱动程序 ”菜单中,单击“ 启动静态驱动程序验证程序...”

  2. 单击“ 规则 ”选项卡。在“ 规则集”下,选择“ 锁定”。

    若要从 Visual Studio 开发人员命令提示符窗口中选择默认规则集,请使用 /检查 选项指定 Locking.sdv。 例如:

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

    有关详细信息,请参阅 使用静态驱动程序验证程序查找驱动程序中的缺陷静态驱动程序验证程序命令 (MSBuild)