Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Driver Verifier is a Windows testing tool that helps you identify driver issues before they cause system crashes or corruption. By monitoring kernel-mode drivers and graphics drivers in real time, Driver Verifier detects illegal function calls and problematic actions that could destabilize your system.
Whether you're developing new drivers or troubleshooting existing ones, Driver Verifier provides the early detection and debugging capabilities you need to build reliable, high-quality drivers. This comprehensive guide covers everything from basic setup to advanced debugging techniques.
- Learn when and why to use Driver Verifier
- Set up Driver Verifier for your testing environment
- Configure verification options for your specific needs
- Debug violations and interpret results
- Apply best practices for driver testing workflows
Important
- Running Driver Verifier could cause the computer to crash.
- Only run Driver Verifier on computers that you use for testing and debugging.
- You must be in the Administrators group on the computer to use Driver Verifier.
Where can I get Driver Verifier?
You don't need to get Driver Verifier, because most versions of Windows include it in %WinDir%\system32\ as Verifier.exe. (Driver Verifier isn't included with Windows 10 S, so we recommend testing driver behavior on Windows 10 instead.) Driver Verifier isn't distributed separately as a download package.
For information about changes in Driver Verifier for Windows 10 and previous versions of Windows, see Driver Verifier: What's New.
When to use Driver Verifier
Use Driver Verifier throughout your driver development and testing process:
Early development
- Find problems early in the development cycle when they're easier and less costly to correct
- Prevent costly delays by catching issues before they reach production
Troubleshooting
- Debug test failures and computer crashes quickly
- Identify root causes of driver-related system instability
Testing and deployment
- Monitor driver behavior when deploying for testing with WDK, Visual Studio, and Windows Hardware Lab Kit (Windows HLK)
- Ensure compatibility with Windows Hardware Certification Kit requirements
For comprehensive driver testing guidance, see Testing a Driver.
Important
Windows Hardware Compatibility Program requires CodeQL for Static Tool Logo (STL) Tests on our Client and Server Operating Systems. We continue to maintain support for SDV and CA on older products. Partners are highly encouraged to review the CodeQL requirements for the Static Tool Logo Test. For more information about using CodeQL, see CodeQL and the Static Tools Logo Test.
How to start Driver Verifier
Run Driver Verifier only on test computers, or on computers that you're testing and debugging. To get the most benefit from Driver Verifier, use a kernel debugger to connect to the test computer. For more information about debugging tools, see Debugging Tools for Windows (WinDbg, KD, CDB, NTSD).
Start a Command Prompt window by selecting Run as administrator, and type verifier to open Driver Verifier Manager.
Select Create standard settings (the default task), and select Next.
You can also choose Create custom settings to select from predefined settings, or to select individual options. For more information, see Driver Verifier options and rule classes and Selecting Driver Verifier Options.
Under Select what drivers to verify, choose one of the selection schemes described in the following table:
Option Recommended use Automatically select unsigned drivers Useful for testing on computers that are running versions of Windows that don't require signed drivers. Automatically select drivers built for older versions of Windows Useful for testing driver compatibility with newer versions of Windows. Automatically select all drivers installed on this computer 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 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 because an I/O request packet (IRP) is passed between each of the drivers in the stack, which allows for a greater level of detail to be provided when an error is detected.
Select a single driver if you're 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 (such as deadlocks or mutexes). The Special Pool and I/O Verification options are more effective when used on one driver at a time.If you chose Select driver names from a list, select Next, then select one or more specific drivers.
Select Finish, then restart the computer.
Note
When using driver verifier with Windows versions 20150 to 25126, if you select ntoskrnl you might receive an invalid state error.
To avoid this issue, either unselect ntoskrnl or upgrade to a version of Windows after build 25126.
Run driver verifier at a command prompt
You can also run Driver Verifier in a Command Prompt window without starting Driver Verifier Manager. For example, to run Driver Verifier with the standard settings on a driver called myDriver.sys, use the following command:
verifier /standard /driver myDriver.sys
For more information about command line options, see Driver Verifier Command Syntax.
How to control Driver Verifier
Choose your preferred method to control Driver Verifier:
- Driver Verifier Manager (GUI) - Easier for beginners, visual interface
- Command line - Faster for experienced users, scriptable
Note
To start Driver Verifier Manager, see How to start Driver Verifier preceding section.
Common Driver Verifier tasks
For each of the following actions, you can use Driver Verifier Manager or enter a command line.
To stop or reset Driver Verifier
In Driver Verifier Manager, select Delete existing settings, then select Finish.
or
Enter the following command at a command prompt:
verifier /resetRestart the computer.
To view Driver Verifier statistics
In Driver Verifier Manager, select Display information about the currently verified drivers, then select Next. Continuing to select Next displays additional information.
or
Enter the following command at a command prompt:
verifier /query
To view Driver Verifier settings
In Driver Verifier Manager, select Display existing settings, then select Next.
or
Enter the following command at a command prompt:
verifier /querysettings
How to debug Driver Verifier violations
To get the most benefit from Driver Verifier, use a kernel debugger and connect it to the test computer. For an overview of debugging tools for Windows, see Debugging Tools for Windows (WinDbg, KD, CDB, NTSD).
If Driver Verifier detects a violation, it generates a bug check to stop the computer. This action provides you with the most information possible for debugging the issue. When you connect a kernel debugger to a test computer running Driver Verifier and Driver Verifier detects a violation, Windows breaks into the debugger and displays a brief description of the error.
All violations detected by Driver Verifier result in bug checks. This bug check is typically a Bug Check 0xC4. For more information, see Debugging Bug Check 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION and Bug Check 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION.
Other common bug check codes include the following codes:
- Bug Check 0xC1: SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION
- Bug Check 0xC6: DRIVER_CAUGHT_MODIFYING_FREED_POOL
- Bug Check 0xC9: DRIVER_VERIFIER_IOMANAGER_VIOLATION
- Bug Check 0xD6: DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION
- Bug Check 0xE6: DRIVER_VERIFIER_DMA_VIOLATION
For more information, see Handling a Bug Check When Driver Verifier is Enabled.
When you start a new debugging session, use the debugger extension command, !analyze. In kernel mode, the !analyze command displays information about the most recent bug check. To display additional information to help identify the faulting driver, add option -v to the command at the kd> prompt:
kd> !analyze -v
In addition to !analyze, you can enter the following debugger extensions at the kd> prompt to view information that is specific to Driver Verifier:
!verifier dumps captured Driver Verifier statistics. Use !verifier -? to display all of the available options.
kd> !verifier!deadlock displays information related to locks or objects tracked by Driver Verifier's deadlock detection feature. Use !deadlock -? to display all of the available options.
kd> !deadlock!iovirp [address] displays information related to an IRP tracked by I/O Verifier. For example:
kd> !iovirp 947cef68Look up the DDI compliance checking rule that was violated. (RuleID is always the first argument to the bug check.) All rule IDs from DDI compliance checking are in the form 0x200nn.
Next steps
Now that you understand the basics of Driver Verifier, explore these related topics:
- Driver Verifier Options - Configure advanced testing scenarios
- Using Driver Verifier - Advanced usage patterns and best practices
- DDI compliance checking - Understand compliance rules and violations
- Debugging Tools for Windows - Set up kernel debugging for Driver Verifier
Get Help
- Driver Verifier Command Syntax - Complete command reference
- Controlling Driver Verifier - Advanced control techniques