驱动程序验证程序是一个运行时验证工具,该工具可提高驱动程序测试的效率。 可以在部署驱动程序以便进行测试时,启用和配置驱动程序验证程序以在所有测试计算机上运行。
当在远程测试计算机上启用驱动程序验证程序时,应该始终设置与测试计算机的内核模式调试连接。有关配置目标计算机以及设置调试电缆的信息,请参阅在 Visual Studio 中设置内核模式调试。
设置驱动程序包项目的驱动程序验证程序属性
- 打开驱动程序包的属性页。在解决方案资源管理器中,右键单击驱动程序包,然后选择“属性”。
- 在驱动程序包的属性页中,依次单击“配置属性”、“驱动程序安装”和“驱动程序验证”。
- 选择“启用驱动程序验证”选项。如果选中了此选项,则可以选择要在测试计算机上验证的驱动程序,然后可以选择要使用的驱动程序验证程序选项。
项目配置和平台
使用配置列表和平台列表,可以对不同的项目配置和平台组合应用不同的部署设置。例如,可以使用一组用于调试版本的部署选项将驱动程序部署到一台测试计算机,并且可以使用用于发行版本的部署选项将驱动程序部署到不同的测试计算机。
启用驱动程序验证程序
你可以为计算机上的所有驱动程序、仅为驱动程序项目或者为指定的驱动程序列表在测试计算机上启用驱动程序验证程序。例如,你可能希望为特定设备堆栈上的一组驱动程序启用驱动程序验证程序。
验证驱动程序
在测试计算机上指定要验证的驱动程序。
所有驱动程序
指定驱动程序验证程序验证在远程测试计算机上安装的所有驱动程序。项目输出
指定驱动程序验证程序验证在远程测试计算机上安装的驱动程序项目。这是默认选项。驱动程序列表
指定驱动程序验证程序在远程测试计算机上验证的驱动程序或驱动程序列表。例如,你可以列出与特定设备关联的所有驱动程序。按二进制文件名称指定驱动程序,例如 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 框架延迟模糊处理 (Windows 8)
当该选项处于活动状态时,驱动程序验证程序完全打乱线程计划,以帮助清除驱动程序中的并发错误。
基于堆栈的故障注入 (Windows 8)
基于堆栈的故障注入选项在内核模式驱动程序中注入资源故障。该选项将特定驱动程序 KmAutoFail.sys 与驱动程序验证程序结合使用来渗入驱动程序错误处理路径。
需要 I/O 验证的驱动程序验证程序选项
有四个选项需要你首先启用 I/O 验证。 如果未启用 I/O 验证,则不会启用这些选项。