使用易失性设置

驱动程序验证程序状态的大多数更改 (激活、停用、更改选项或更改要验证的驱动程序列表) 仅在重启计算机 (“重新启动”) 时才生效。

但是,无需重新启动即可激活和停用某些选项。 这些设置称为 易失性设置。 对这些设置的更改将立即生效,并持续到下一次启动或再次更改。

本部分介绍可变设置,以及如何在不同版本的 Windows 中包含的驱动程序验证程序版本上使用它们。

注意

此选项将在 Windows 的未来版本中弃用。 /dif [<ruleclass_1><> ruleclass_2 ...] /now 选项提供了Windows 11的替代项。 请参阅 验证程序命令行

在不重新启动的情况下更改选项

从Windows 11开始,只有以下标志可以与 volatile 一起使用:

0x00000004 (bit  2) - Randomized low resources simulation
0x00000020 (bit  5) - Deadlock detection
0x00000080 (bit  7) - DMA checking
0x00000200 (bit  9) - Force pending I/O requests
0x00000400 (bit 10) - IRP logging

注意

可以使用 /dif [<><ruleclass_1 ruleclass_2 ...] /now 命令在不重新启动的情况下启用 Windows 11> 中的许多其他标志。 验证程序命令行中介绍了支持的标志。

从Windows 10开始,只有以下标志可以与 volatile 一起使用:

标准标志

0x00000001 (bit  0) - Special pool
0x00000002 (bit  1) - Force IRQL checking
0x00000008 (bit  3) - Pool tracking
0x00000010 (bit  4) - I/O verification
0x00000020 (bit  5) - Deadlock detection
0x00000080 (bit  7) - DMA checking
0x00000100 (bit  8) - Security checks
0x00000800 (bit 11) - Miscellaneous checks

其他标志

0x00000004 (bit  2) - Randomized low resources simulation
0x00000200 (bit  9) - Force pending I/O requests (*)
0x00000400 (bit 10) - IRP logging (*)
0x00002000 (bit 13) - Invariant MDL checking for stack (*)
0x00004000 (bit 14) - Invariant MDL checking for driver (*)

在不重新启动的情况下更改驱动程序

你可以添加和删除驱动程序 (即启动和停止驱动程序) 验证,而无需重启计算机,即使驱动程序验证程序尚未运行。

还可以在不重新启动的情况下启动对已加载的驱动程序的验证,但如果不重新启动,则无法停止对已加载的驱动程序的验证。 加载并验证驱动程序后,驱动程序验证程序会监视该驱动程序,直到下次重新启动,但你可以在不重新启动的情况下关闭驱动程序验证程序可选的驱动程序检查,从而最大程度地减少驱动程序验证程序开销。

可以使用 验证程序命令行驱动程序验证程序管理器更改可变设置。

易失性和注册表设置

能够在不重新启动的情况下添加和更改驱动程序以及设置选项是一种极大的便利,它允许你在某些测试方案中运行驱动程序验证程序,而在其他情况下是不可能实现的。

但是,由于将驱动程序验证程序设置添加到注册表的传统模型具有一些优势,因此需要为每个设置决定是要使用可变方法,还是在注册表中设置它,还是同时在注册表中设置它。

  • 易失性或“运行时”设置会立即生效,但当你关闭或重新启动 Windows 时,这些设置将丢失。

  • 注册表设置需要重新启动,但它们将保留在注册表中,直到你更改它们并再次重新启动。

应将驱动程序加载时一致使用或需要测量的设置添加到注册表。 可以在需要时启用其他设置。

同时使用注册表设置和可变设置时,请记住,使用易失性设置而不是注册表设置;它们不是添加项。

使用验证程序命令行配置易失设置

若要添加或删除可变选项,请使用 /volatile /flags 参数。

若要在可变列表中添加或删除驱动程序,请使用 /volatile /adddriver/volatile /removedriver 参数。 有关详细信息 ,请参阅驱动程序验证程序命令语法

  • 在不重新启动的情况下启动或停止驱动程序验证:

    verifier /volatile /adddriver DriverName.sys
    verifier /volatile /removedriver DriverName.sys
    

    可以使用此命令语法添加 (启动验证) 任何驱动程序,甚至是当前加载的驱动程序。 用于删除 (停止当前加载的驱动程序的验证) 的命令将失败。 与往常一样,未加载的驱动程序的验证将在加载驱动程序后立即开始。

  • 在不重新启动的情况下激活或停用选项:

    verifier /volatile /flags <flags>
    

    例如,此命令在不重新启动的情况下激活 死锁检测 选项。

    verifier /volatile /flags 0x20
    
  • 若要关闭所有驱动程序验证程序选项,请执行以下操作:

    如果不重新启动,则无法停止对当前加载的驱动程序的验证。 但是,可以使用以下命令语法停用所有驱动程序验证程序选项,而无需重新启动,从而将开销降至最低,直到下一次重新启动。

    verifier /volatile /flags 0
    

    驱动程序验证程序继续使用 自动检查 功能中的选项监视驱动程序,该功能无法关闭,但开销将降低到典型验证开销的 10% 左右。

使用驱动程序验证程序管理器配置易失设置

查看当前处于活动状态的驱动程序验证程序功能或更改易失性设置

  1. 启动驱动程序验证程序管理器,然后选择 “显示有关当前已验证的驱动程序的信息 ”任务。

  2. 单击 “下一步”

    此屏幕显示当前有效的驱动程序验证程序选项,包括可变设置,但不包括计划在下次重启后生效的永久设置更改。 每个驱动程序都会列出其状态。

  3. 若要更改活动选项,请单击“ 更改”。 选择或清除所需选项,然后单击“ 确定”。

  4. 若要验证新驱动程序,请单击“ 添加”。 这将打开一个对话框,你可以在其中浏览计算机以查找要验证的驱动程序文件。 找到正确的驱动程序后,单击“ 打开 ”将其添加到已验证驱动程序列表中。

  5. 若要从列表中删除驱动程序,请选择该驱动程序的名称,然后单击“ 删除”。

  6. 查看有效的驱动程序验证程序选项或完成更改后,单击“ 下一步 ”两次,然后单击“ 完成”。

驱动程序状态值

驱动程序验证程序管理器显示三个可能的驱动程序状态值,这些值显示在 “当前设置”和已验证的驱动程序 (运行时信息) 屏幕上。 可能的状态值如下所示:

加载 驱动程序当前已加载并正在验证。

卸载 自上次启动以来,至少加载并验证了驱动程序一次,但当前未加载。

从未加载过 已指示驱动程序验证程序验证此驱动程序,但自此请求以来尚未加载该驱动程序。 这可以指示驱动程序是按需加载的,并且尚未在此会话中是必需的。 它还可能表明请求了不存在的驱动程序进行验证,或者驱动程序映像文件已损坏。

驱动程序验证程序命令语法

控制驱动程序验证程序