驱动程序包项目的驱动程序验证程序属性

驱动程序验证程序是一款运行时验证工具,用于提高驱动程序测试的有效性。 当你部署用于测试的驱动程序时,可以启用驱动程序验证程序并将其配置为在所有测试计算机上运行。

当你启用远程测试计算机上的驱动程序验证程序时,应始终设置与测试计算机的内核模式调试连接。 有关配置目标计算机和设置调试电缆的信息,请参阅 Windows 调试入门

设置驱动程序包项目的驱动程序验证程序属性

  1. 打开驱动程序包的属性页。 在“解决方案资源管理器”中,选择并按住(或右键单击)驱动程序包项目,然后选择“属性”。
  2. 在驱动程序包的属性页中,依次选择“配置属性”、“驱动程序安装”、“驱动程序验证” 。
  3. 选择“启用驱动程序验证” 选项。 选中此选项时,你可以选择要在测试计算机上验证的驱动程序并且还可以选择要使用的驱动程序验证程序选项。

项目配置和平台

配置列表和平台列表可让你为不同项目配置和平台组合应用不同的部署设置。 例如,你可以使用一组调试版本的部署选项将驱动程序部署到一台测试计算机,使用发布版本的部署选项将驱动程序部署到另一台测试计算机。

启用驱动程序验证程序

你可以在测试计算机上为计算机上的所有驱动程序、仅为驱动程序项目或为指定的驱动程序列表启用驱动程序验证程序。 例如,你可能想要在堆栈上为特定设备的一组驱动程序启用驱动程序验证程序。

验证驱动程序

指定要在测试计算机上进行验证的驱动程序。

所有驱动程序
指定驱动程序验证程序验证远程测试计算机上已安装的所有驱动程序。

项目输出
指定驱动程序验证程序验证远程测试计算机上已安装的驱动程序项目。 这是默认选项。

驱动程序列表
指定驱动程序验证程序在远程测试计算机上验证的驱动程序或驱动程序列表。 例如,你可以列出与特定设备关联的所有驱动程序。 用二进制文件名称指定驱动程序,如 Driver.sys。 使用分号分隔驱动程序列表。 不支持通配符值,例如 n*.sys。

驱动程序验证程序标准标志

你可以在测试计算机上配置以下驱动程序验证程序选项。

  • DDI 合规性检查 (Windows 8)

    当此选项处于活动状态时,驱动程序验证程序将应用一组设备驱动程序接口 (DDI) 规则,以检查驱动程序与操作系统的内核接口之间的交互是否正确。

  • 死锁检测

    当此选项处于活动状态时,驱动程序验证程序将监控驱动程序对旋转锁、互斥体和快速互斥体的使用。 这将检测驱动程序代码是否可能会导致在某个时刻死锁。

  • DMA 验证

    当此选项处于活动状态时,驱动程序验证程序将监控驱动程序对直接内存访问 (DMA) 例程的使用。 这将检测 DMA 缓冲器、适配器和映射寄存器的使用是否不正确。

  • 强制 IRQL 检查

    当此选项处于活动状态时,驱动程序验证程序将通过使可分页代码失效将极端内存压力置于驱动程序上。 如果驱动程序尝试访问错误 IRQL 处的分页内存或持有旋转锁,则驱动程序验证程序将会检测到此行为。

  • I/O 验证

    当此选项处于活动状态时,驱动程序验证程序将通过特殊池分配驱动程序中断请求数据包 (IRP),并监控驱动程序的 I/O 处理。 这将检测 I/O 例程的使用是否非法或不一致。 此外,驱动程序验证程序还将监控多个 I/O 管理程序例程的调用情况,并对即插即用 (PnP) IRP、电源 IRP 和 WMI IRP 执行压力测试。

  • 其他检查

    当此选项处于活动状态时,驱动程序验证程序将查找驱动程序崩溃的常见原因,如空余内存的不当处理等。

  • 池跟踪

    当此选项处于活动状态时,驱动程序验证程序将检查驱动程序在未加载时是否已释放其全部内存分配。 这会揭示内存泄漏。

  • 安全检查

    当此选项处于活动状态时,驱动程序验证程序将查找导致出现安全漏洞的常见错误,如内核模式例程对用户模式地址的引用等。

  • 特殊池检查

    当此选项处于活动状态时,驱动程序验证程序将通过特殊池分配驱动程序的大部分内存请求。 将会监控此特殊池是否存在内存溢出、内存欠载和内存在释放后仍可访问的情况。

驱动程序验证程序场景特定设置

  • 资源不足模拟

    当此选项处于活动状态时,驱动程序验证程序将会随机地让池分配请求和其他资源请求失败。 通过将这些分配故障注入到系统中,驱动程序验证程序可以测试驱动程序处理资源不足情况的能力。

  • 强制挂起 I/O 请求

    当此选项处于活动状态时,驱动程序验证程序将检测驱动程序对 STATUS_PENDING 返回值的响应,方法是为随机调用 IoCallDriver 返回 STATUS_PENDING。

  • IRP 日志记录

    当此选项处于活动状态时,驱动程序验证程序将监控驱动程序对 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 验证,则无法启用这些选项。