Driver Verifier Command Syntax

The following syntax is used when running the Verifier utility in a Command Prompt window.

You can type several options on the same single line. For example:

verifier /flags 7 /driver beep.sys disksdd.sys

Windows 11 Syntax

You can use the /volatile parameter with some Driver Verifier /flags options. For details, see Using Volatile Settings.

Note

The /volatile parameter will be deprecated in a future version of Windows. In Windows 11 the replacement option is the /dif DifEnabledRule /now option. See the section Windows 11 Rule Classes below for the rule classes that can be enabled using this option.

  verifier /standard /all
  verifier /standard /driver NAME [NAME ...]
  verifier {/ruleclasses | /rc | dif} <options> [<ruleclass_1> <ruleclass_2> ...] /all
  verifier {/ruleclasses | /rc | dif} <options> [<ruleclass_1> <ruleclass_2> ...] /driver NAME [NAME ...]
  verifier /flags <options> /all
  verifier /flags <options> /driver NAME [NAME ...]
  verifier /rules [OPTION ...]
  verifier /dif [<ruleclass_1> <ruleclass_2> ...] /now /driver NAME [NAME ...]
  verifier /query
  verifier /querysettings
  verifier /bootmode [persistent | resetonbootfail | resetonunusualshutdown | oneboot]
  verifier /bc <number_of_reboots>
  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

Windows 10 Syntax

You can use the /volatile parameter with some Driver Verifier /flags options and with /standard. You cannot use /volatile with the /flags options for DDI compliance checking, Power Framework Delay Fuzzing or Storport Verification. For details, see Using Volatile Settings.

  verifier /standard /all
  verifier /standard /driver NAME [NAME ...]
  verifier {/ruleclasses | /rc} <options> [<ruleclass_1> <ruleclass_2> ...] /all
  verifier /flags <options> /all
  verifier /flags <options> /driver NAME [NAME ...]
  verifier /rules [OPTION ...]
  verifier /query
  verifier /querysettings
  verifier /bootmode [persistent | resetonbootfail | resetonunusualshutdown | 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

Windows 8.1 Syntax

You can use the /volatile parameter with some Driver Verifier /flags options and with /standard. You cannot use /volatile with the /flags options for DDI compliance checking, Power Framework Delay Fuzzing, Storport Verification. For details, see Using Volatile Settings.

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

Windows 8, Windows 7 Syntax

You can use the /volatile parameter with some Driver Verifier /flags options and with /standard. You cannot use /volatile with the /flags options for DDI compliance checking, Power Framework Delay Fuzzing, Storport Verification, SCSI Verification or with /disk. For details, see Using Volatile Settings.

verifier [/volatile] [/standard | /flags Options ] [ /all | /driver DriverList ]
verifier /volatile /faults [Probability PoolTags Applications DelayMins] /driver DriverList
verifier /volatile {/adddriver | /removedriver} DriverList
verifier /reset
verifier /querysettings
verifier /query
verifier /log LogFileName [/interval Seconds]
verifier /?

Parameters

Verifier Command-Line Syntax

/all Directs Driver Verifier to verify all installed drivers after the next boot.

/bc <number_of_reboots> Sets the number of reboots for which verification should be active.

This option automatically sets the ResetOnUnusualShutdown boot mode.

/bootmode mode Controls whether the settings for Driver Verifier are enabled after a reboot. To set or change this option, you must reboot the computer.

Bootmode Description

persistent

Ensures that the Driver Verifier settings persist (stay in effect) over many reboots. This is the default setting.

resetonbootfail

Disables Driver Verifier for subsequent reboots if the system failed to start.

oneboot

Only enables the Driver Verifier settings for the next time the computer starts. Driver Verifier is disabled for subsequent reboots.

resetonunusualshutdown

(Introduced in Windows 10, build 1709) Driver Verifier will persist until an unusual shutdown occurs. Its abbreviation, 'rous', can be used.

/dif DifEnabledRule Enable checking using a DIF enabled rule. Checking will take effect the next time the system is rebooted. Added in Windows 11.

/dif DifEnabledRule /now Immediately enable checking using a DIF enabled rule. Enables the rule classes immediately without needing reboot. This option is only valid if no rule classes are already running. See the Windows 11 rule class descriptions for the rule classes capable of immediate activation.

/driver DriverList Specifies one or more drivers that will be verified. DriverList is a list of drivers by binary name, such as Driver.sys. Use a space to separate each driver name. Wildcard values, such as n*.sys, are not supported.

/driver.exclude DriverList Specifies one or more drivers that will be excluded from verification. This parameter is applicable only if all drivers are selected for verification. DriverList is a list of drivers by binary name, such as Driver.sys. Use a space to separate each driver name. Wildcard values, such as n*.sys, are not supported.

/faults Enables the Low Resources Simulation feature in Driver Verifier. You can use /faults in place of /flags 0x4. However, you cannot use /flags 0x4 with the /faults subparameters.

You can use the following subparameters of the /faults parameter to configure Low Resources Simulation.

Subparameter Description

Probability

Specifies the probability that Driver Verifier will fail a given allocation. Type a number (in decimal or hexadecimal) to represent the number of chances in 10,000 that Driver Verifier will fail the allocation. The default value, 600, means 600/10000 or 6%.

Pool Tags

Limits the allocations that Driver Verifier can fail to allocations with the specified pool tags. You can use a wildcard character (*) to represent multiple pool tags. To list multiple pool tags, separate the tags with spaces. By default, all allocations can fail.

Applications

Limits the allocations that Driver Verifier can fail to allocations for the specified program. Type the name of an executable file. To list programs, separate the program names with spaces. By default, all allocations can fail.

DelayMins

Specifies the number of minutes after booting during which Driver Verifier does not intentionally fail any allocations. This delay allows the drivers to load and the system to stabilize before the test begins. Type a number (in decimal or hexadecimal). The default value is 7 (minutes).

/faultssystematic Specifies the options for Systematic low resources simulation. Use the 0x40000 flag to select Systematic low resources simulation option.

OPTION Description

enableboottime

Enables fault injections across computer reboots.

disableboottime

Disables fault injections across computer reboots (this is the default setting).

recordboottime

Enables fault injections in what if mode across computer reboots.

resetboottime

Disables fault injections across computer reboots and clears the stack exclusion list.

enableruntime

Dynamically enables fault injections.

disableruntime

Dynamically disables fault injections.

recordruntime

Dynamically enables fault injections in what if mode.

resetruntime

Dynamically disables fault injections and clears the previously faulted stack list.

querystatistics

Shows the current fault injection statistics.

incrementcounter

Increments the test pass counter used to identify when a fault was injected.

getstackid COUNTER

Retrieves the indicated injected stack identifier.

excludestack STACKID

Excludes the stack from fault injection.

/flags Options Activates the specified options after the next reboot. This number can be entered in decimal or in hexadecimal (with an 0x prefix) format. Any combination of the following values is allowed.

Decimal Hexadecimal Standard Setting Option

1

0x1 (bit 0)

X

Special Pool

2

0x2 (bit 1)

X

Force IRQL Checking

4

0x4 (bit 2)

Low Resources Simulation

8

0x8 (bit 3)

X

Pool Tracking

16

0x10 (bit 4)

X

I/O Verification

32

0x20 (bit 5)

X

Deadlock Detection

64

0x40 (bit 6)

Enhanced I/O Verification This option is automatically activated when you select I/O Verification

128

0x80 (bit 7)

X

DMA Verification

256

0x100 (bit 8)

X

Security Checks

512

0x200 (bit 9)

Force Pending I/O Requests

1024

0x400 (bit 10)

IRP Logging

2048

0x800 (bit 11)

X

Miscellaneous Checks

8192

0x2000 (bit 13)

Invariant MDL Checking for Stack (Starting with Windows 8)

16384

0x4000 (bit 14)

Invariant MDL Checking for Driver (Starting with Windows 8)

32768

0x8000 (bit 15)

Power Framework Delay Fuzzing (Starting with Windows 8) (Deprecated in Windows 10 Build 19042 and above)

65536

0x10000 (bit 16)

Port/miniport interface checking (Starting with Windows 10)

131072

0x20000 (bit 17)

X

DDI compliance checking (Starting with Windows 8)

262144

0x40000 (bit 18)

Systematic low resources simulation (Starting with Windows 8.1) (Deprecated in Windows 10 Build 19042 and above)

524288

0x80000 (bit 19)

DDI compliance checking (additional) (Starting with Windows 8.1) (Deprecated in Windows 10 Build 19042 and above)

2097152

0x200000 (bit 21)

NDIS/WIFI verification (Starting with Windows 8.1)

8388608

0x800000 (bit 23)

Kernel synchronization delay fuzzing (Starting with Windows 8.1) (Deprecated in Windows 10 Build 19042 and above)

16777216

0x1000000 (bit 24)

VM switch verification (Starting with Windows 8.1)

33554432

0x2000000 (bit 25)

Code integrity checks (Starting with Windows 10)

You cannot use this method to activate the Storport Verification options. For information, see Storport Verification.

/flags VolatileOptions Specifies the Driver Verifier options that are changed immediately without rebooting.

You can use the /volatile parameter with all /flags values.)

Enter a number in decimal or in hexadecimal format (with an 0x prefix).

Any combination of the following values is permitted.

Hexadecimal Option

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

/ruleclasses or /rc <ruleclass_1> <ruleclass_2> ... <ruleclass_k>

The ruleclasses parameter is available starting with Windows Version 1803.

The ruleclasses parameter encompasses a larger set of verification classes than the /flags parameter above. While /flags is limited to a 32 bit bitmap expression, this option can include more than 32 verification classes. Each positive decimal integer represents a verification class. Multiple classes can be expressed by separating each class id with a space character. The following rule classes IDs are available.

Standard Rule Classes

Value Rule
1 Special pool
2 Force IRQL checking
4 Pool tracking
5 I/O verification
6 Deadlock detection
8 DMA checking
9 Security checks
12 Miscellaneous checks
18 DDI compliance checking
34 WDF Verification
37 File System Filter verification (5)

Additional Rule Classes

These rule classes are intended for specific scenario testing. Rule classes marked with (*) require I/O Verification (5) and automatically enable it. Rule classes marked with (**) support disabling of individual rules. Rule classes marked with (***) are in logging mode by default and require /onecheck in order to crash upon violation.

Flags marked with (!) require DIF mode (rule class 36) to be enabled.

Value Rule
3 Randomized low resources simulation
10 Force pending I/O requests (*)
11 IRP logging (*)
14 Invariant MDL checking for stack (*)
15 Invariant MDL checking for driver (*)
16 Power framework delay fuzzing
17 Port/miniport interface checking
19 Systematic low resources simulation
20 DDI compliance checking (additional)
22 NDIS/WIFI verification (**)
24 Kernel synchronization delay fuzzing
25 VM switch verification
26 Code integrity checks
33 Driver isolation checks (***, !)
36 DIF mode

Windows 11 Rule Classes

Starting with Windows 11 the following standard rule classes are available. These rule classes are all enabled when using the /standard option.

The /now column indicates which rule classes can be enabled without a reboot using the /dif DifEnabledRule /now option.

Standard Rule Classes

Value Rule /now
1 Special pool yes
2 Force IRQL checking yes
4 Pool tracking yes
5 I/O verification yes
6 Deadlock detection no
8 DMA checking no
9 Security checks yes
12 Miscellaneous checks yes
18 DDI compliance checking yes
34 WDF Verification no
37 File System Filter verification no

Note that rule class 37 (File System Filter verification) requires that rule class 5 (I/O verification) also be enabled. Please see File System Filter verification for more information about this rule class.

Additional Rule Classes

The following additional rule classes are available.

  • The /now column indicates which rule classes can be enabled without a reboot using the /dif DifEnabledRule /now option.
  • The Rule classes required column indicates which rule classes must also be enabled to use the given rule class. Note that the /dif command automatically includes rule class 36 (DIF mode) but /ruleclasses and /rc do not.
  • Rule classes marked with (**) support disabling of individual rules.
  • Rule classes marked with (***) are in logging mode by default and require the /onecheck option to crash upon violation.
Value Rule /now Rule classes required
3 Randomized low resources simulation no none
10 Force pending I/O requests no 5
11 IRP logging no 5
14 Invariant MDL checking for stack no 5
15 Invariant MDL checking for driver no 5
16 Power framework delay fuzzing no none
17 Port/miniport interface checking no none
19 Systematic low resources simulation yes 36
20 DDI compliance checking - additional yes none
22 NDIS/WIFI verification (**) no none
24 Kernel synchronization delay fuzzing no none
25 VM switch verification no none
26 Code integrity checks no none
33 Driver isolation checks (***) no 36
36 DIF mode yes none

/log LogFileName [/interval|Seconds] Creates a log file with name LogFileName. Driver Verifier periodically writes statistics to this file. For details, see Creating Log Files.

If a verifier /log command is typed at the command line, the command prompt does not return. To close the log file and return a prompt, use the CTRL+C key. After a reboot, to create a log, you must submit the verifier /log command again.

Option Description
/interval Seconds Specifies the interval between log file updates. The default is 30 seconds.

/rules Option Options for rules that can be disabled (advanced).

Option Description

query

Shows current status of controllable rules.

reset

resets all rules to their default state.

default ID

Sets rule ID to its default state. For the supported rules, the rule ID is the Bug Check 0xC4 (DRIVER_VERIFIER_DETECTED_VIOLATION) parameter 1 value.

disable ID

Disables specified rule ID. For the supported rules, the rule ID is the Bug Check 0xC4 (DRIVER_VERIFIER_DETECTED_VIOLATION) parameter 1 value.

/standard Activates the "standard" or default Driver Verifier options after the next boot. The standard options are Special Pool, Force IRQL Checking, Pool Tracking, I/O Verification, Deadlock Detection, DMA Verification. and WDF Verification The standard options also include Security Checks, Miscellaneous Checks and DDI compliance checking.

Note

Starting in Windows 10 versions after 1803, using /flags 0x209BB will no longer automatically enable WDF verification. Use the /standard syntax to enable standard options, with WDF verification included.

/stop Disables rule classes enabled via '/dif /now' to halt verification.

/volatile /flags Changes the settings without rebooting the computer. Volatile settings take effect immediately. You can use the /volatile parameter with the /flags parameter to enable and disable some options without rebooting. You can also use /volatile with the /adddriver and /removedriver parameters to start or stop the verification of a driver without rebooting, even if Driver Verifier is not already running.

Specifies the Driver Verifier options that are changed immediately without rebooting. Only the following flags can be used with 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

For details, see Using Volatile Settings.

Option Description

/adddriver VolatileDriverList

Adds the specified drivers to the volatile settings. To specify multiple drivers, list their names, separated by spaces. Wildcard values, such as n.sys, are not supported. See Using Volatile Settings for details.

/removedriver VolatileDriverList

Removes the specified drivers from the volatile settings. To specify multiple drivers, list their names, separated by spaces. Wildcard values, such as n.sys, are not supported. See Using Volatile Settings for details.

/reset Clears all Driver Verifier settings. After the next boot, no drivers will be verified.

/querysettings Displays a summary of the options that will be activated and drivers that will be verified after the next boot. The display does not include drivers and options added by using the /volatile parameter. For other ways to view these settings, see Viewing Driver Verifier Settings.

/query Displays a summary of Driver Verifier's current activity. The Level field in the display is the hexadecimal value of options set with the /volatile parameter. See Monitoring Global Counters and Monitoring Individual Counters for explanations of each statistic.

/domain Types **** Options Controls the verifier extension settings. The following verifier extension types are supported.

Types Description

wdm

Enables verifier extension for WDM drivers.

ndis

Enables verifier extension for networking drivers.

ks

Enables verifier extension for kernel mode streaming drivers.

audio

Enables verifier extension for audio drivers.

The following extension options are supported.

Options Description

rules.default

Enables default validation rules for the selected verifier extension.

rules.all

Enables all validation rules for the selected verifier extension.

/logging Enables logging for violated rules detected by the selected verifier extensions.

/livedump Enables live memory dump collection for violated rules detected by the selected verifier extensions.

/? Displays command-line help.

For more information about the use of these commands, see Controlling Driver Verifier and Monitoring Driver Verifier.

/help Displays command-line help.

For more information about the use of these commands, see Controlling Driver Verifier and Monitoring Driver Verifier.

Return Codes

The following values are returned after driver verifier has run.

0: EXIT_CODE_SUCCESS

1: EXIT_CODE_ERROR

2: EXIT_CODE_REBOOT_NEEDED