使用这些规则可以验证驱动程序是否正确遵循一组关于正确处理设备对象和密钥的常规要求,并确保驱动程序不调用对于非即插即用 (PnP) 驱动程序或非电源策略所有者的非功能驱动程序对象 (FDO) 不合适的 DDI。
本部分内容
| 主题 | DESCRIPTION |
|---|---|
AccessHardwareKey 规则指定总线驱动程序不应尝试从 EvtChildListCreateDevice 访问子设备的硬件密钥。 |
|
AddPdotoStaticChildlist 规则指定,对于一个 PDO 设备,在驱动程序成功调用 WdfPdoInitAllocate 和 WdfDeviceCreate 后,必须调用框架函数 WdfFdoAddStaticChild。 |
|
ChildListConfiguration 规则指定支持动态枚举的驱动程序必须在调用 WdfDeviceCreate 函数之前调用 WdfFdoInitSetDefaultChildListConfig。 |
|
Cleanup4CtlDeviceRegistered 规则指定,如果即插即用(PnP)驱动程序为控制设备对象调用 WdfDeviceCreate,驱动程序必须注册所需的事件回调函数之一。 |
|
NonFDONotPowerPolicyOwnerAPI 规则指定,如果非 FDO 驱动程序不是电源策略所有者,则无法调用某些 DDI。 |
|
NonPnPDrvPowerPolicyOwnerAPI 规则指定非 PnP 驱动程序无法调用与电源管理相关的某些 DDI。 |
|
UnSafeAllocatePool 规则是一个重要的安全规则,用于检查驱动程序是否未使用已弃用的 DDI 来分配内存。 |
选择杂项规则集
在 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)。