Driver Verifier

Driver Verifier monitors Windows kernel-mode drivers and graphics drivers to detect illegal function calls or actions that might corrupt the system. Driver Verifier can subject the Windows drivers to a variety of stresses and tests to find improper behavior.

You can run Driver Verifier on multiple drivers simultaneously, or on one driver at a time. You can configure which tests to run, which allows you to put a driver through heavy stress loads or through more streamlined testing.

Where can I download Driver Verifier?

You don't need to. Driver Verifier (Verifier.exe) is included in every version of Windows, starting with Windows 2000 (in the %windir%\system32 directory). There isn't a separate Driver Verifier download package.

Open a Command Prompt window (Run as administrator).

Type verifier to open the Driver Verifier Manager, or type verifier /? to view command line options. See Driver Verifier Command Syntax for more information.

Caution

Running Driver Verifier could cause the computer to crash.

You should only run Driver Verifier on computers you are using for testing and debugging.

You must be in the Administrators group on the computer to use Driver Verifier.

Use Driver Verifier for troubleshooting and debugging test failures and computer crashes.

How to start Driver Verifier

You should only run Driver Verifier on test computers, or computers you are testing and debugging. To get the most benefit from Driver Verifier, you should use a kernel debugger and connect to the test computer. See Windows Debugging.

Open a Command Prompt window (Run as administrator) and type verifier to open the Driver Verifier Manager.

Provides maximum coverage in terms of the number of drivers that are tested on a system. This option is useful for test scenarios where a driver can interact with other devices or drivers on a system.

This option can also exhaust the resources available for Special Pool and some resource tracking. Testing all drivers can also adversely affect system performance.

Select driver names from a list

In most cases, you will want to specify which drivers to test.

Selecting all drivers in a device stack allows the Enhanced I/O Verification option to track objects and check compliance as an IRP is passed between each of the drivers in the stack and allows for a greater level of detail to be provided should an error be found.

Select a single driver if you are running a test scenario that measures system or driver performance metrics, or if you want to allocate the greatest number of resources available for detecting memory corruption or resource tracking issues (deadlocks, mutexs). The Special Pool and I/O Verification options will be more effective when used on one driver at a time.

Click Finish and reboot the computer.

Note You can also run Driver Verifier in a Command Prompt window. For example, to run Driver Verifier with the standard settings on a driver called myDriver.sys, you would use the following command:

How to debug Driver Verifier violations

To get the most benefit from Driver Verifier, you should use a kernel debugger and connect to the test computer. See Windows Debugging for more information.

If Driver Verifier detects a violation, it generates a bug check to stop the computer. This is to provide you with the most information possible for debugging the issue. When you have a kernel debugger connected to a test computer running Driver Verifier, if Driver Verifier detects a violation, Windows breaks into the debugger and displays a brief description of the error.

All Driver Verifier violations result in bug checks, the most common ones (although not necessarily all of them) are:

When you start a new debug session, use the debugger extension command !analyze. In kernel mode, the !analyze command displays information about the most recent bug check. The !analyze -v command displays additional information and attempts to pinpoint the faulting driver.

!ruleinfo [RuleID] displays information related to the DDI compliance checking rule that was violated (RuleID is always the first argument to the bug check. All DDI Compliance Checking RuleID are in the form 0x200nn).
For example: