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