使用易失性设置

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

但是,可以在不重启的情况下激活和停用某些选项。 这些称为易 失性设置。 对这些设置的更改会立即生效,并持续到下一次启动,或直到再次更改。

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

备注

此选项将在以后发布的 Windows 中弃Windows。 /nowVerifier 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

备注

无需使用 /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. 查看完生效的驱动程序验证程序选项或完成更改后,单击"下一步"两次,然后单击"完成"

驱动程序状态值

驱动程序验证程序管理器显示"当前设置"上显示的驱动程序的三个可能状态值,并 (运行时信息 ) 驱动程序。 可能的状态值如下所示:

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

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

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

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

控制驱动程序验证程序