How to create a driver verification log

The Windows Hardware Certification Program requires a driver verification log (DVL) for driver submissions. The DVL contains a summary of the results from static analysis tools, CodeQL. The DVL doesn't contain any source code information. Before creating a DVL for your driver, run CodeQL, the code analysis tool, and static driver verifier. For more information, see Static Tools Logo Test and CodeQL and the Static Tools Logo Test.

Prepare the driver

  1. Before running the code analysis tools, build and link your driver using the latest Windows Driver Kit (WDK).
  2. Select Release for the solution configuration and x64 for the solution platform.

Determine and run the required tests

To determine which tests are required for the version of Windows you wish to certify for, see the Static Tools Logo Test.

Run the following tests, as required.

Create the driver verification log

  1. From the Driver menu, select Create Driver Verification Log.
  2. Verify that the Code Analysis Log, Static Driver Verifier Log, and CodeQL Log files are detected.
  3. Select Create.

The driver verification log has the file name extension .DVL.XML. The log is created in the project folder, for example, \myDriverProject\myDriverName.DVL.XML.

SDV performs a clean rebuild of the driver, which removes the Code Analysis log. As such, be sure to run SDV before running CA.

When you're ready to test your driver using the Windows Hardware Lab Kit, copy the driver verification log to the %systemdrive%\DVL directory on the test computer. Delete the contents of the directory on the test computer before you copy the new driver verification log.

Important

Timeouts, spaceouts, and other non-successful results in the DVL file are acceptable for certification submission. Non-successful results won't cause the static tools test in HLK to fail.

Use the Visual Studio command prompt window

You can also create the driver verification log from a Visual Studio command prompt window. Use either the Visual Studio native tools command prompt installed with Visual Studio, or the Enterprise Windows Driver Kit (EWDK).

msbuild.exe <vcxprojectfile> /target:dvl /p:Configuration="Release" /P:Platform=x64

Create a driver verification log outside of msbuild or Visual Studio

Microsoft ships as part of the Windows Driver Kit (WDK) and Enterprise WDK (eWDK) a component called dvl.exe which can be used to generate driver verification logs (DVLs) via command-line. Starting in WDK/eWDK preview versions 21342 and above, it's possible to generate a DVL from the command line outside of the context of msbuild or Visual Studio.

Generate DVL from CodeQL sarif file

  1. Locate dvl.exe from the WDK or a mounted eWDK. It's typically installed in C:\Program Files (x86)\Windows Kits\10\Tools\dvl\dvl.exe
  2. Call dvl.exe by passing the /manualCreate flag, a driver name, a desired architecture, and /sarifPath. Where /sarifPath includes the path to the folder containing the sarif file.
"C:\Program Files (x86)\Windows Kits\10\Tools\dvl\dvl.exe" /manualCreate <driverName> <driverArchitecture> /sarifPath <pathToSarifLocation>

Generate a DVL from a CodeQL sarif file, or when using CA and SDV

  1. Place the results that must be consumed to create the DVL in a single directory, along with any vcxproj file. For drivers to be certified for Windows Client, this file is the CodeQL SARIF file. Windows Server certification might also include the Code Analysis and Static Driver Verifier (SDV) results files. Check the WHCP requirements documents for specific details on which tools are required to be run for device driver certification.

  2. Place the CodeQL SARIF files and Code Analysis XML files in the top level of the directory. Place the SDV DVL.xml file in a subfolder called sdv.

  3. Navigate to the top-level directory which contains the CodeQL SARIF file from the command line.

  4. Locate dvl.exe from the WDK or a mounted eWDK.

  5. Call dvl.exe by passing the /manualCreate flag, a driver name, and a desired architecture. For example:

    Use one of the following strings for your driverArchitecture:

    • X86
    • X64
    • Arm
    • Arm64

    Note

    Don't include ".sys" as part of your driverName string.

  6. Inspect the DVL to ensure that it was generated correctly.

This usage is primarily intended for generating DVLs with CodeQL results, but can also be used for SDV and CA results.

Release notes

The most current information about the Code Analysis tool, Static Driver Verifier, and the driver verification log, is in the WDK release notes on the Windows Driver Kit (WDK) download page.