verifier

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012

驱动程序验证程序监视 Windows 内核模式驱动程序和图形驱动程序,目的是检测可能损坏系统的非法函数调用或操作。 驱动程序验证程序可以使 Windows 驱动程序经受各种压力和测试以发现不当行为。 你可以配置要运行的测试,让驱动程序承受沉重的压力负载或经受更精简的测试。 还可以同时在多个驱动程序上运行驱动程序验证程序,或每次在一个驱动程序上运行。

重要

只有计算机上管理员组的成员才能使用驱动程序验证程序。 运行驱动程序验证程序可能导致计算机崩溃,因此应该只在用于测试和调试的计算机上运行此实用工具。

语法

verifier /standard /all
verifier /standard /driver NAME [NAME ...]
verifier /flags <options> /all
verifier /flags <options> /driver NAME [NAME ...]
verifier /rules [OPTION ...]
verifier /query
verifier /querysettings
verifier /bootmode [persistent | disableafterfail | oneboot]
verifier /reset
verifier /faults [Probability] [PoolTags] [Applications] [DelayMins]
verifier /faultssystematic [OPTION ...]
verifier /log LOG_FILE_NAME [/interval SECONDS]
verifier /volatile /flags <options>
verifier /volatile /adddriver NAME [NAME ...]
verifier /volatile /removedriver NAME [NAME ...]
verifier /volatile /faults [Probability] [PoolTags] [Applications] [DelayMins]
verifier /domain <types> <options> /driver ... [/logging | /livedump]
verifier /logging
verifier /livedump
verifier /?
verifier /help

参数设置

参数 描述
/all 指示驱动程序验证程序实用工具在下次启动后验证所有已安装的驱动程序。
/bootmode [persistent \| disableafterfail \| oneboot \| resetonunusualshutdown] 控制是否在重启后启用驱动程序验证程序实用工具的设置。 若要设置或更改此选项,必须重启计算机。 可用的模式如下:
  • persistent - 确保驱动程序验证程序设置在多次重启后保持不变(保持生效)。 这是默认设置。
  • disableafterfail - 如果 Windows 无法启动,此设置将为后续重启禁用驱动程序验证程序实用工具。
  • oneboot - 仅在计算机下次启动时启用驱动程序验证程序设置。 为后续重启禁用驱动程序验证程序实用工具。
  • resetonunusualshutdown - 在发生异常关机之前一直保持启用驱动程序验证程序实用工具。 可以使用缩写形式“rous”。
/driver <driverlist> 指定一个或多个要验证的驱动程序。 driverlist 参数是按二进制名称列出的驱动程序列表,例如 driver.sys。 使用空格分隔每个驱动程序名称。 不支持通配符值,例如 n*.sys
/driver.exclude <driverlist> 指定一个或多个要从验证中排除的驱动程序。 仅当选择验证所有驱动程序时,此参数才适用。 driverlist 参数是按二进制名称列出的驱动程序列表,例如 driver.sys。 使用空格分隔每个驱动程序名称。 不支持通配符值,例如 n*.sys
/faults 在驱动程序验证程序实用工具中启用低资源模拟功能。 可以使用 /faults 代替 /flags 0x4。 但是,不能将 /flags 0x4/faults 子参数一起使用。 可以使用 /faults 参数的以下子参数来配置低资源模拟:
  • Probability - 指定驱动程序验证程序实用工具使给定的分配失败的概率。 键入一个数字(十进制或十六进制)来表示驱动程序验证程序实用工具使分配失败的概率(万分之几)。 默认值 600 表示 600/10000,即 6%。
  • Pool Tags - 将驱动程序验证程序实用工具可使其失败的分配限制为具有指定池标记的分配。 可以使用通配符 (*) 来表示多个池标记。 若要列出多个池标记,请用空格分隔标记。 默认情况下,所有分配都可能失败。
  • Applications - 将驱动程序验证程序实用工具可使其失败的分配限制为指定程序的分配。 键入可执行文件的名称。 若要列出程序,请用空格分隔程序名称。 默认情况下,所有分配都可能失败。
  • DelayMins - 指定在启动后,驱动程序验证程序实用工具不会有意使任何分配失败的分钟数。 在测试开始之前,可以在这段此延迟时间内加载驱动程序并稳定系统。 输入一个数字(十进制或十六进制)。 默认值为 7(分钟)。
/faultssystematic 指定系统低资源模拟的选项。 使用 0x40000 标志选择系统低资源模拟选项。 可以使用以下选项:
  • enableboottime - 每次计算机重启时启用故障注入。
  • disableboottime - 每次计算机重启时禁用故障注入(默认设置)。
  • recordboottime - 每次计算机重启时以 what if 模式启用故障注入。
  • resetboottime - 每次计算机重启时禁用故障注入,并清除堆栈排除列表。
  • enableruntime - 动态启用故障注入。
  • disableruntime - 动态禁用故障注入。
  • recordruntime - 以 what if 模式动态启用故障注入。
  • resetruntime - 动态禁用故障注入,并清除以前发生故障的堆栈列表。
  • querystatistics - 显示当前故障注入统计信息。
  • incrementcounter - 递增用于标识注入故障时间的测试通过计数器。
  • getstackid COUNTER - 检索指示的已注入堆栈标识符。
  • excludestack STACKID - 从故障注入中排除堆栈。
/flags <options> 在下次重启后激活指定的选项。 可以用十进制或十六进制(带有 0x 前缀)格式输入此数字。 允许以下值的任意组合:
/flags <volatileoptions> 指定在不重新启动的情况下会立即更改的驱动程序验证程序实用工具选项。此数字可以十进制或十六进制(附带 0x 前缀)格式输入。 允许以下值的任意组合:
  • 值:1 或 0x1(位 0)- 特殊池
  • 值:2 或 0x2(位 1)- 强制 IRQL 检查
  • 值:4 或 0x4(位 2)- 低资源模拟
<probability> 介于 1 和 10,000 之间的数字,指定故障注入概率。 例如,指定 100 表示故障注入概率为 1% (100/10,000)。

如果未指定此参数,则使用默认概率 6%。

<tags> 指定要为其注入故障的池标记,用空格字符分隔。 如果未指定此参数,则可为任何池分配注入故障。
<apps> 指定要为其注入故障的应用的映像文件名,用空格字符分隔。 如果未指定此参数,则可在任何应用程序中进行低资源模拟。
<minutes> 一个正数,指定重启后不发生故障注入的时长,以分钟为单位。 如果未指定此参数,则使用默认时长 8 分钟
/iolevel <level> 指定 I/O 验证级别。 [level] 的值可以是 1 - 启用级别 1 I/O 验证(默认)或 2 - 启用级别 1 I/O 验证和级别 2 I/O 验证。 如果未启用 I/O 验证(使用 /flags 0x10),则忽略 /iolevel
/log <logfilename> [/intervalseconds] 使用指定的名称创建日志文件。 驱动程序验证程序实用工具根据你选择性地设置的间隔定期将统计信息写入此文件。 默认间隔为 30 秒

如果在命令行中键入 verifier /log 命令,则命令提示符不会返回。 若要关闭日志文件并返回提示,请使用 CTRL+C 键。 重启后,若要创建日志,必须再次提交 verifier /log 命令。

/rules <option> 可禁用的规则的选项,包括:
  • query - 显示可控规则的当前状态。
  • reset - 将所有规则重置为默认状态。
  • default ID - 将规则 ID 设置为默认状态。 对于支持的规则,规则 ID 是 Bug Check 0xC4 (DRIVER_VERIFIER_DETECTED_VIOLATION) 参数 1 值。
  • disable ID - 禁用指定的规则 ID。 对于支持的规则,规则 ID 是 Bug Check 0xC4 (DRIVER_VERIFIER_DETECTED_VIOLATION) 参数 1 值。
/standard 下次重启后激活“标准”或默认驱动程序验证程序选项。 标准选项包括特殊池、强制 IRQL 检查、池跟踪、I/O 验证、死锁检测、DMA 验证、安全检查、其他检查和 DDI 合规性检查。 这等效于 /flags 0x209BB

[!NOTE] 从 1803 之后的 Windows 10 版本开始,使用 /flags 0x209BB 将不再自动启用 WDF 验证。 使用 /standard 语法启用标准选项,包括 WDF 验证。

/volatile 在不重启计算机的情况下更改设置。 易失性设置会立即生效。

可以将 /volatile 参数与 /flags 参数结合使用,这样,无需重启即可启用和禁用某些选项。 还可以将 /volatile/adddriver/removedriver 参数结合使用,这样,无需重启即可启动或停止驱动程序验证,即使驱动程序验证程序实用工具尚未运行。 有关详细信息,请参阅使用易失性设置

/adddriver <volatiledriverlist> 从易失性设置中添加指定的驱动程序。 若要指定多个驱动程序,请列出其名称并用空格分隔。 不支持通配符值,例如 n.sys
/removedriver <volatiledriverlist> 从易失性设置中删除指定的驱动程序。 若要指定多个驱动程序,请列出其名称并用空格分隔。 不支持通配符值,例如 n.sys
/reset 清除所有驱动程序验证程序实用工具设置。 下次重启后,不会验证任何驱动程序。
/querysettings 显示下次启动后要激活的选项和要验证的驱动程序的摘要。 显示内容不包括使用 /volatile 参数添加的驱动程序和选项。 有关查看这些设置的其他方法,请参阅查看驱动程序验证程序设置
/query 显示驱动程序验证程序实用工具的当前活动的摘要。 显示内容中的 Level 字段是使用 /volatile 参数设置的选项的十六进制值。 有关每项统计信息的解释,请参阅监视全局计数器监视单个计数器
/domain <types> <options> 控制验证程序扩展设置。 支持以下验证程序扩展类型:
  • wdm - 为 WDM 驱动程序启用验证程序扩展。
  • ndis - 为网络驱动程序启用验证程序扩展。
  • ks - 为内核模式流式处理驱动程序启用验证程序扩展。
  • audio - 为音频驱动程序启用验证程序扩展。
。 支持以下扩展选项:
  • rules.default - 为所选验证程序扩展启用默认验证规则。
  • rules.all - 为所选验证程序扩展启用所有验证规则。
/logging 为所选验证程序扩展检测到的被违反规则启用日志记录。
/livedump 为所选验证程序扩展检测到的被违反规则启用实时内存转储收集。
/? 显示命令行帮助。

返回代码

运行驱动程序验证程序后,将返回以下值:

  • 0: EXIT_CODE_SUCCESS

  • 1: EXIT_CODE_ERROR

  • 2: EXIT_CODE_REBOOT_NEEDED

注解