其他规则集 (WDM)
使用这些规则验证驱动程序是否正确遵循一组常规要求,以便正确处理注册表项、字符串和设备对象指针。
在本节中
主题 | 说明 |
---|---|
AddDevice 规则指定驱动程序的 AddDevice 例程仅在调用 IoCreateDevice 之后调用 IoAttachDeviceToDeviceStack。 |
|
DanglingDeviceObjectReference 规则指定驱动程序使用 IoGetAttachedDeviceReference 返回的相同设备对象指针调用 ObDereferenceObject。 |
|
PnpSameDeviceObject 规则指定驱动程序使用指向有效目标设备对象的指针调用 IoAttachDeviceToDeviceStack。 |
|
TargetRelationNeedsRef 规则指定在处理 TargetDeviceRelation 查询时,驱动程序的 DispatchPnP 例程调用以下函数之一来引用子设备的 PDO: |
|
UnSafeAllocatePool 是一个重要的安全规则,用于检查驱动程序是否未使用已弃用的 DDI 来分配内存。 |
|
ZwRegistryCreate 规则指定在调用 ZwCreateKey 后,驱动程序只能在持有注册表项的打开句柄时调用以下注册表函数, (即,在调用 ZwClose 或 ZwDeleteKey 之前关闭或删除注册表项的句柄) : |
|
ZwRegistryOpen 规则指定在调用 ZwOpenKey 后,驱动程序仅在持有注册表项 (打开句柄时调用以下注册表函数,即在调用 ZwClose 或 ZwDeleteKey 之前) : |
选择杂项规则集
在 Microsoft Visual Studio 中选择驱动程序项目 (.vcxProj) 。 在“ 驱动程序 ”菜单中,单击“ 启动静态驱动程序验证程序...”。
单击“ 规则 ”选项卡。在“ 规则集”下,选择“ 杂项”。
若要从 Visual Studio 开发人员命令提示符窗口中选择默认规则集,请使用 /检查 选项指定 Miscellaneous.sdv。 例如:
msbuild /t:sdv /p:Inputs="/check:Miscellaneous.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
有关详细信息,请参阅 使用静态驱动程序验证程序查找驱动程序中的缺陷 和 静态驱动程序验证程序命令 (MSBuild) 。