VirtualStorport 规则集 (Storport)

使用这些规则验证驱动程序是否正确调用 Storport 虚拟微型端口 (VMiniport) 驱动程序特别感兴趣的 DDI。

在本节中

主题 说明

DoubleExFreePool

此规则验证驱动程序是否不会尝试释放两次同一池内存块。

DoubleKeSetEvent

此规则验证是否未在同一事件对象上调用 两次 KeSetEvent 。 如果将同一事件对象传递给例程,驱动程序会使规则失败。

IoFreeIrp

此规则验证 IoAllocateIrp 分配的 IRP 是否将由 IoFreeIrp 释放,或者其完成例程将由 IoSetCompletionRoutine 设置。

StorPortVirtualDevice

此规则验证退出 HwStorFindAdapter 例程时,PORT_CONFIGURATION_INFORMATION (Storport) 结构中的 VirtualDevice 字段已设置为 FALSE。 此规则仅适用于物理 StorPort 微型端口。

StorPortVirtualDevice2

此规则验证退出 HwStorFindAdapter 例程时,PORT_CONFIGURATION_INFORMATION (Storport) 结构中的 VirtualDevice 字段是否已设置为 TRUE。 此规则仅适用于虚拟 StorPort 微型端口。

WithinCriticalRegion

此规则验证是否仅当禁用常规内核 APC 传递时驱动程序才调用某些同步函数。

ZwRegistryCreate

此规则验证使用 ZwCreateKey 创建的注册表项的句柄随后是否被其他 ZwXxx 例程正确使用。 不得在已打开的句柄上调用 ZwOpenKey 例程。 不能在未打开的句柄上调用 ZwEnumerateKeyZwEnumerateValueKeyZwFlushKeyZwQueryKeyZwQueryValueKey、ZwSetValueKeyZwCloseZwDeleteKey 例程。 在返回之前,还必须关闭句柄。

ZwRegistryOpen

此规则验证通过 ZwOpenKey 打开的注册表项的句柄随后是否被其他 ZwXxx 例程正确使用。 不能在未打开的句柄上调用 ZwEnumerateKeyZwEnumerateValueKeyZwFlushKeyZwQueryKeyZwQueryValueKey、ZwSetValueKeyZwCloseZwDeleteKey 例程。 在返回之前,还必须关闭句柄。

选择 VirtualStorport 规则集

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

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

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

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

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