驱动程序验证程序 是一种运行时验证工具,可提高驱动程序测试的有效性。 部署驱动程序进行测试时,可以启用并配置驱动程序验证程序以在所有测试计算机上运行。
在远程测试计算机上启用驱动程序验证程序时,应始终设置与测试计算机的内核模式调试连接。 有关配置目标计算机和设置调试电缆的信息,请参阅 Windows 调试入门。
为驱动程序包项目设置驱动程序验证程序属性
- 打开驱动程序包的属性页。 在解决方案资源管理器中选择并按住(或右键单击)驱动程序包项目,然后选择“ 属性”。
- 在驱动程序包的属性页中,选择 “配置属性”,选择“ 驱动程序安装”,然后选择“ 驱动程序验证”。
- 选择 “启用驱动程序验证 ”选项。 选择此选项后,可以选择驱动程序或驱动程序以在测试计算机上进行验证,并且可以选择要使用的 驱动程序验证程序 选项。
项目配置和平台
配置列表和平台列表允许为不同的项目配置和平台组合应用不同的部署设置。 例如,可以使用一组用于调试版本的部署选项将驱动程序部署到一台测试计算机,并使用发布版本的部署选项将驱动程序部署到其他测试计算机。
启用驱动程序验证程序
可以为计算机上的所有驱动程序、驱动程序项目或指定驱动程序列表在测试计算机上启用驱动程序验证程序。 例如,你可能想要为特定设备的堆栈上的驱动程序集启用驱动程序验证程序。
验证驱动程序
指定要在测试计算机上验证的驱动程序。
所有驱动程序
指定驱动程序验证程序验证远程测试计算机上所有已安装的驱动程序。
项目输出
指定驱动程序验证程序验证远程测试计算机上安装的驱动程序项目。 这是默认选项。
驱动程序列表
指定驱动程序验证程序在远程测试计算机上验证的驱动程序或驱动程序列表。 例如,可以列出与特定设备关联的所有驱动程序。 按二进制名称指定驱动程序,例如 Driver.sys。 使用分号分隔驱动程序列表。 不支持通配符值,例如 n*.sys。
驱动程序验证程序标准标志
可以在测试计算机上配置以下驱动程序验证程序选项。
DDI 符合性检查 (Windows 8)
当此选项处于活动状态时,驱动程序验证程序将应用一组设备驱动程序接口 (DDI) 规则,以检查驱动程序与操作系统的内核接口之间的交互是否正确。
-
当此选项处于活动状态时,驱动程序验证程序将监控驱动程序对旋转锁、互斥体和快速互斥体的使用。 这会检测驱动程序的代码是否有可能在某个时候造成死锁。
-
如果此选项处于活动状态,驱动程序验证程序将监视驱动程序使用直接内存访问(DMA)例程。 这会检测 DMA 缓冲区、适配器和映射寄存器的不当使用。
-
当此选项处于活动状态时,驱动程序验证程序将通过使可分页代码失效将极端内存压力置于驱动程序上。 如果驱动程序尝试访问错误 IRQL 处的分页内存或持有旋转锁,则驱动程序验证程序将会检测到此行为。
-
如果此选项处于活动状态,驱动程序验证程序将从特殊池分配驱动程序的中断请求数据包(IRP),并监视驱动程序的 I/O 处理。 这会检测 I/O 例程的非法或不一致使用。 驱动程序验证程序还监视多个 I/O 管理器例程的调用,并执行即插即用(PnP)IRP、电源 IRP 和 WMI IRP 的压力测试。
-
当此选项处于活动状态时,驱动程序验证程序将查找驱动程序崩溃的常见原因,如空余内存的不当处理等。
-
如果此选项处于活动状态,驱动程序验证程序将检查驱动程序是否在卸载时释放了其所有内存分配。 这会显示内存泄漏。
-
当此选项处于活动状态时,驱动程序验证程序将查找导致出现安全漏洞的常见错误,如内核模式例程对用户模式地址的引用等。
-
当此选项处于活动状态时,驱动程序验证程序将通过特殊池分配驱动程序的大部分内存请求。 此特殊池针对内存溢出、内存不足和释放后访问的内存进行监视。
驱动程序验证器场景特定设置
-
如果此选项处于活动状态,驱动程序验证程序会随机失败池分配请求和其他资源请求。 通过将这些分配故障注入系统,驱动程序验证程序测试驱动程序应对低资源情况的能力。
-
当此选项处于活动状态时,驱动程序验证程序通过返回对 IoCallDriver 的随机调用STATUS_PENDING来测试驱动程序对STATUS_PENDING返回值的响应。
-
如果此选项处于活动状态,驱动程序验证程序将监视驱动程序对 IRP 的使用,并创建 IRP 使用的日志。
堆栈的不变 MDL 检查 (Windows 8)
“ 堆栈的固定 MDL 检查 ”选项监视驱动程序如何处理驱动程序堆栈中的固定 MDL 缓冲区。 驱动程序验证程序可以检测固定 MDL 缓冲区的非法修改。 若要使用此选项,必须在至少一个驱动程序上启用 I/O 验证。
驱动程序的不变 MDL 检查(Windows 8)
“驱动程序的不变 MDL 检查”选项监控每个驱动程序如何处理不变 MDL 缓冲区。 此选项检测固定 MDL 缓冲区的非法修改。 若要使用此选项,必须在至少一个驱动程序上启用 I/O 验证。
Power Framework 延迟模糊处理 (Windows 8)
如果此选项处于活动状态,驱动程序验证程序会随机化线程计划,以帮助刷新驱动程序中的并发错误。
基于堆栈的故障注入 (Windows 8)
基于堆栈的故障注入选项在内核模式驱动程序中注入资源故障。 此选项将特殊的驱动程序 KmAutoFail.sys与 驱动程序验证程序 结合使用,以渗透驱动程序错误处理路径。
需要 I/O 验证的驱动程序验证程序选项
有四个选项要求你首先启用 I/O 验证。 如果未启用 I/O 验证,则不会启用这些选项。
相关主题
- 驱动程序验证程序
- 如何在运行时使用 Visual Studio 测试驱动程序
- 将驱动程序部署到测试计算机
- Windows 调试入门