其他规则集 (WDM)

使用这些规则验证驱动程序是否正确遵循一组常规要求,以便正确处理注册表项、字符串和设备对象指针。

在本节中

主题 说明

AddDevice

AddDevice 规则指定驱动程序的 AddDevice 例程仅在调用 IoCreateDevice 之后调用 IoAttachDeviceToDeviceStack

DanglingDeviceObjectReference

DanglingDeviceObjectReference 规则指定驱动程序使用 IoGetAttachedDeviceReference 返回的相同设备对象指针调用 ObDereferenceObject

PnpSameDeviceObject

PnpSameDeviceObject 规则指定驱动程序使用指向有效目标设备对象的指针调用 IoAttachDeviceToDeviceStack

TargetRelationNeedsRef

TargetRelationNeedsRef 规则指定在处理 TargetDeviceRelation 查询时,驱动程序的 DispatchPnP 例程调用以下函数之一来引用子设备的 PDO:

UnSafeAllocatePool

UnSafeAllocatePool 是一个重要的安全规则,用于检查驱动程序是否未使用已弃用的 DDI 来分配内存。

ZwRegistryCreate

ZwRegistryCreate 规则指定在调用 ZwCreateKey 后,驱动程序只能在持有注册表项的打开句柄时调用以下注册表函数, (即,在调用 ZwCloseZwDeleteKey 之前关闭或删除注册表项的句柄) :

ZwRegistryOpen

ZwRegistryOpen 规则指定在调用 ZwOpenKey 后,驱动程序仅在持有注册表项 (打开句柄时调用以下注册表函数,即在调用 ZwCloseZwDeleteKey 之前) :

选择杂项规则集

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

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

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

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

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