锁定规则集 (KMDF)
使用这些规则验证驱动程序是否正确管理共享资源。
在本节中
主题 | 说明 |
---|---|
ParentObjectCheckLock 规则指定驱动程序应调用 WdfWaitLockCreate 和 WdfSpinLockCreate 设置父对象。 |
|
ReqSendWhileSpinlock 规则指定在驱动程序持有旋转锁时不发送任何请求。 |
|
Spinlock 规则指定对 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 和 KeReleaseSpinlock 的调用在严格交替中使用。 |
|
SpinlockDpc 规则指定在严格替换中使用对 KeAcquireSpinLock 或 KeAcquireSpinLockRaiseToDpc 和 KeReleaseSpinlock 的调用。 |
|
SpinlockRelease 规则指定在 KMDF 回调中以均衡的方式使用对 KeAcquireSpinLock、KeAcquireSpinLockRaiseToDpc 和 KeReleaseSpinLock 的调用。 在任何 KMDF 回调例程结束时,驱动程序不应持有旋转锁。 |
|
WdfInterruptLock 规则指定对 WdfInterruptAcquireLock 方法的调用与对 WdfInterruptReleaseLock 的调用严格交替使用。 此外,在任何 KMDF 回调例程结束时,驱动程序不应持有由先前调用 WdfInterruptAcquireLock 获取的框架旋转锁对象。 |
|
WdfInterruptLockRelease 规则指定在 KMDF 回调例程中以均衡的方式使用对 WdfInterruptAcquireLock 和 WdfInterruptReleaseLock 的调用。 在任何 KMDF 回调例程结束时,驱动程序不应保存以前调用 WdfInterruptAcquireLock 获取的框架旋转锁对象。 |
|
WdfSpinlock 规则指定对 WdfSpinLockAcquire 方法的调用与 WdfSpinlockRelease 严格交替使用。 在任何 KMDF 回调例程结束时,驱动程序不应保存以前调用 WdfSpinLockAcquire 获取的框架 spinlock 对象。 |
|
WdfSpinlockRelease 规则指定在 KMDF 事件回调函数中以均衡的方式使用对 WdfSpinLockAcquire 和 WdfSpinlockRelease 的调用。 当 KMDF 事件回调函数返回时,驱动程序不应持有以前调用 WdfSpinLockAcquire 获取的框架旋转锁对象。 |
|
WdfWaitlock 规则指定对 WdfWaitLockAcquire 的调用与 WdfWaitlockRelease 严格交替使用。 当 KMDF 事件回调函数返回时,驱动程序不应持有以前调用 WdfWaitLockAcquire 获取的框架旋转锁对象。 |
|
WdfWaitlockRelease 规则指定在 KMDF 事件回调函数中以均衡的方式使用对 WdfWaitLockAcquire 和 WdfWaitLockRelease 的调用。 当 KMDF 事件回调函数返回时,驱动程序不应持有以前调用 WdfWaitLockAcquire 获取的框架旋转锁对象。 |
选择锁定规则集
在 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) 。