Steps required for building
For Windows 10, Windows Server 2022
- Download Windows 11 21H2 EWDK ISO (https://go.microsoft.com/fwlink/?linkid=2202360) and mount it (let’s say to
E:\
). You can download the ISO to the host and connect it to the VM as CD-ROM.
For Windows 11, Windows Server 2025
- Download Windows 11 24H2 EWDK ISO (https://go.microsoft.com/fwlink/?linkid=2271957) and mount it (let’s say to
F:\
). You can download the ISO to the host and connect it to the VM as CD-ROM.
General steps
- Download and install WinFSP (https://github.com/billziss-gh/winfsp/releases/tag/v2.0) with “Core”, “Developer” and “Kernel Developer” features enabled.
- Download and install CPDK 8.0 (https://www.microsoft.com/en-us/download/details.aspx?id=30688).
- Download and install .NET Framework version 4.8 (https://dotnet.microsoft.com/download/dotnet-framework/thank-you/net48-web-installer). Windows Server 2022 and Windows 11 don’t need it.
- Change directory to
kvm-guest-drivers-windows
.
- Run
build_AllNoSdv.bat [Win10|Win11]
depending on your Windows version.
- Choose
Win10
for Windows 10, Windows Server 2022 (x86, x64, ARM64)
- Choose
Win11
for Windows 11, Windows Server 2025 (x86 (several UMD only), x64, ARM64)
- Run
Tools\signAll.bat
to sign drivers. Loading of test-signed drivers must be enabled on your system (https://docs.microsoft.com/en-us/windows-hardware/drivers/install/the-testsigning-boot-configuration-option).
- Find drivers/services in folders named
Install
inside driver folders.
Additional steps for driver development
- Copy Windows 11, version 24H2 EWDK to a local directory
- Download Windows 11, version 24H2 EWDK (released May 22, 2024) with Visual Studio Buildtools 17.8.6 ISO https://go.microsoft.com/fwlink/?linkid=2271957 and mount it (let’s say to
E:\
).
- copy entire content to local directory (c:\ewdk11_24h2):
mkdir c:\ewdk11_24h2 && xcopy /e e:\* c:\ewdk11_24h2
- unmount and delete Windows 11 24H2 EWDK ISO file
- Set ALL USER environment variable
set EWDK11_24H2_DIR=c:\ewdk11_24h2
- Copy Windows 11, version 21H2 EWDK to a local directory
- Download Windows 11 21H2 EWDK with Visual Studio Build Tools 16.11.10 ISO https://go.microsoft.com/fwlink/?linkid=2202360 and mount it (let’s say to
E:\
).
- copy entire content to local directory (c:\ewdk11):
mkdir c:\ewdk11 && xcopy /e e:\* c:\ewdk11
- unmount and delete Wirndows 11 21H2 EWDK ISO file
- Set ALL USER environment variable
set EWDK11_DIR=c:\ewdk11
- Copy DVL from EWDK for Windows 10, version 1903 to a local directory
- Download EWDK for Windows 10, version 1903 with Visual Studio Build Tools 16.0 ISO https://go.microsoft.com/fwlink/p/?linkid=2086136 and mount it (let’s say to
E:\
).
- mkdir C:\dvl1903
- copy all files (
dvl.exe
, Microsoft.StaticToolsLogo.ObjectModel.dll
) from E:\Program Files\Windows Kits\10\Tools\dvl
to C:\dvl1903
- unmount and delete Wirndows 10 version 1903 EWDK ISO file
- Download and install WinFSP 2023 https://github.com/winfsp/winfsp/releases/tag/v2.0 with the “Core”, “Developer” and “Kernel Developer” feature enabled.
- Download and install CPDK 8.0 https://www.microsoft.com/en-us/download/details.aspx?id=30688.
-
Download and install .NET Framework version 4.8 https://dotnet.microsoft.com/download/dotnet-framework/thank-you/net48-web-installer. Windows Server 2022 and Windows 11 don’t need it.
- CodeQL Windows Setup for Windows 11 24H2
- IF YOU HAVE EXISTING CODEQL INSTALLED REMOVE IT
- mkdir C:\codeql-home
- Navigate to the GitHub CodeQL Download Page
- Download version 2.15.4 of the zip file if you are certifying a driver for the Windows Hardware Compatibility Program in 2024. For example for 64-bit Windows “codeql-win64.zip”.
- Unzip the CodeQL folder in the zip file to the
C:\codeql-home\codeql\
directory.
- Confirm that the CodeQL command works by displaying the help.
C:\codeql-home\codeql\>codeql --help
- Clone the repository to access the driver-specific queries
- Navigate to the Microsoft CodeQL GitHub repository.
- Clone the repository to download all CodeQL queries and query suites with driver-specific queries.
cd C:\codeql-home
C:\codeql-home\>git clone https://github.com/microsoft/Windows-Driver-Developer-Supplemental-Tools.git --recursive -b WHCP_24H2
Branch depending on the OS you are certifying for, per the following table:
Release |
Branch to use |
Windows Server 2022 |
WHCP_21H2 |
Windows 11 |
WHCP_21H2 |
Windows 11, version 22H2 |
WHCP_22H2 |
Windows 11, version 23H2 |
WHCP_23H2 |
Windows 11, version 24H2 |
WHCP_24H2 |
-
Download the CodeQL query packages
Downloading query packages and running CodeQL analysis MUST be done from the same user.
CodeQL will install the downloaded query packs to the default directory that contains the current user name:
C:\Users\<current user>\.codeql\packages\<package name>\<downloaded version>\
If you need to run CodeQL analysis from different users, then every user MUST download query packages.
Run the following commands to download the CodeQL query packages:
cd C:\codeql-home\codeql
codeql pack download microsoft/windows-drivers@1.1.0
codeql pack download codeql/cpp-queries@0.9.0
codeql pack install c:\codeql-home\Windows-Driver-Developer-Supplemental-Tools\src\
Notes on the build batch
Legacy build steps:
The building of drivers for the following operating systems is not supported by the batch build procedure:
- Windows XP / Server 2003
- Windows Vista / Server 2008
- Windows 7 / Server 2008R2
- Windows 8 / Server 2012
- Windows 8.1 / Server 2012R2
Note: latest tag that supports the building of drivers for legacy operating systems:
- https://github.com/virtio-win/kvm-guest-drivers-windows/releases/tag/08.03.2021-last-buldable-point-XP
- https://github.com/virtio-win/kvm-guest-drivers-windows/releases/tag/02.12.2021-last-buildable-point-Win7
- https://github.com/virtio-win/kvm-guest-drivers-windows/releases/tag/01.11.2023-last-buildable-point-Win8
Run buildAll.bat
for the complete build including SDV. Note that an SDV build takes a long time.
Set VIRTIO_WIN_SDV_2022=1 to build DVL for system device drivers.