锁定规则集 (WDM)
使用这些规则验证驱动程序是否正确管理共享资源。
在本节中
主题 | 说明 |
---|---|
CancelSpinLock 规则指定驱动程序在调用 IoReleaseCancelSpinLock 之前调用 IoAcquireCancelSpinLock,并且驱动程序在后续调用 IoAcquireCancelSpinLock 之前调用 IoReleaseCancelSpinLock。 |
|
CancelSpinlockRelease 规则指定以严格交替方式使用对 IoAcquireCancelSpinLock 和 IoReleaseCancelSpinLock 的调用。 也就是说,每次调用 IoAcquireCancelSpinLock 都必须具有对 IoReleaseCancelSpinLock 的相应调用。 |
|
CriticalRegions 规则指定驱动程序必须在调用 KeLeaveCriticalRegion 之前调用 KeEnterCriticalRegion,并且驱动程序在对 KeEnterCriticalRegion 的任何后续调用之前调用 KeLeaveCriticalRegion。 允许 (嵌套调用。) |
|
ExclusiveResourceAccess 规则指定驱动程序在调用 ExReleaseResourceLite 或 ExReleaseResourceForThreadLite 之前调用 ExAcquireresourceExclusiveLite,并指定驱动程序在后续调用 ExAcquireResourceExclusiveLite 之前调用 ExReleaseResourceLite 或 ExReleaseResourceForThreadLite。 |
|
GuardedRegions 规则验证对 KeEnterGuardedRegion 和 KeLeaveGuardedRegion 的调用是否在严格交替中使用。 |
|
QueuedSpinLock 规则指定驱动程序在调用 KeReleaseInStackQueuedSpinLock 之前调用 KeAcquireInStackQueuedSpinLock,驱动程序在对 KeAcquireInStackQueuedSpinLock 的任何后续调用之前调用 KeReleaseInStackQueuedSpinLock。 |
|
QueuedSpinLockRelease 规则指定对 KeAcquireInStackQueuedSpinLock 和 KeReleaseInStackQueuedSpinLock 的调用以严格替换方式使用。 |
|
SpinLock 规则指定,在调用 KeAcquireSpinLock 后,驱动程序在后续调用 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 之前调用 KeReleaseSpinLock。 |
|
SpinLockDpc 规则指定必须严格替换调用 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 和 KeReleaseSpinLock。 也就是说,在调用 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 后,驱动程序必须在后续调用 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 之前调用 KeReleaseSpinLock。 |
|
SpinlockRelease 规则指定对 KeReleaseSpinLock 的调用与 KeAcquireSpinLock 和 KeAcquireSpinLockRaiseToDpc 严格交替进行。 也就是说,驱动程序必须在调用 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 之后调用 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 之后调用 KeReleaseSpinLock。 |
|
SpinLockSafe 规则指定在保留旋转锁时不调用 IoStartNextPacket 和 IoCompleteRequest。 |
|
InCriticalRegion 规则指定驱动程序对特定同步函数的调用仅在调用 KeEnterCriticalRegion 之后和调用 KeLeaveCriticalRegion 之前显示。 受影响的同步函数如下: |
选择锁定规则集
在 Microsoft Visual Studio 中选择驱动程序项目 (.vcxProj) 。 在“ 驱动程序 ”菜单中,单击“ 启动静态驱动程序验证程序...”。
单击“ 规则 ”选项卡。在“ 规则集”下,选择“ 锁定”。
若要从 Visual Studio 开发人员命令提示符窗口中选择默认规则集,请使用 /检查 选项指定 Locking.sdv。 例如:
msbuild /t:sdv /p:Inputs="/check:Locking.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
有关详细信息,请参阅 使用静态驱动程序验证程序查找驱动程序中的缺陷 和 静态驱动程序验证程序命令 (MSBuild) 。