Building a Driver with Visual Studio and the WDK
This topic describes how you can build a driver with the Windows Driver Kit (WDK). WDK 10 is fully integrated with Microsoft Visual Studio. You can build a driver using the Visual Studio development environment, or you can build a driver directly from the command line by using the Microsoft Build Engine (MSBuild).
You can use any edition of Microsoft Visual Studio 2015, including Microsoft Visual Studio Community 2015, to build drivers for:
- Windows 10
- Windows 8.1
- Windows 7
Important Starting in Windows Driver Kit (WDK) 8, MSBuild replaced the Windows Build Utility (Build.exe). The WDK now uses the same compiler and build tools that you use to build Visual Studio projects. Driver projects that were built with previous versions of the WDK must be converted to work in the Visual Studio environment. You can run a conversion utility from the command line, or you can convert an existing driver by creating new Visual Studio project from existing sources. For more info, see Creating a Driver From Existing Source Files and WDK and the Visual Studio build environment.
Building a Driver Using Visual Studio
You build a driver the same way you build any project or solution in Visual Studio. When you create a new driver project using a Windows driver template, the template defines a default (active) project configuration and a default (active) solution build configuration.
Note You can convert projects and solutions that you created with WDK 8 or Windows Driver Kit (WDK) 8.1 to work with Windows Driver Kit (WDK) 10 and Visual Studio 2015. Before you open the projects or solutions, run the ProjectUpgradeTool. The ProjectUpgradeTool converts the projects and solutions so that they can be built using WDK 10.
For information about managing and editing build configurations, see Building in Visual Studio.
The default Solution build configuration is Debug and Win32. In versions of the WDK prior to Windows 8, this build configuration would correspond to building a driver using an x86 Checked Build Environment.
To select a configuration and build a driver
- Ensure that you have the same version of SDK and WDK installed on your computer.
- Open the driver project or solution in Visual Studio.
- Right-click the solution in the Solutions Explorer and select Configuration Manager.
- From the Configuration Manager, select the Active Solution Configuration (for example, Debug or Release) and the Active Solution Platform (for example, Win32) that correspond to the type of build you are interested in.
- Select the target operating system for which to build the driver. Navigate to the project properties in Driver > General, and set the TargetVersion property.
- Configure the project properties for your driver or driver package. You can set properties for deployment, driver signing, or other tasks. For more information, see Configuring project properties for your driver and driver package.
- From the Build menu, click Build Solution (Ctrl+Shift+B).
Building a Driver Using the Command Line (MSBuild)
You can build a driver from the command line using the Visual Studio Command Prompt window and the Microsoft Build Engine (MSBuild)
To build a driver using the Visual Studio Command Prompt window
Open a Developer Command Prompt for VS2015 window.
From this window you can use MSBuild.exe to build any Visual Studio project by specifying the project (.VcxProj) or solutions (.Sln) file.
Navigate to the project directory and enter the MSbuild command for your target.
For example, to perform a clean build of a Visual Studio driver project called MyDriver.vcxproj using the default Platform and Configuration, navigate to the project directory and enter the following MSBuild command:
msbuild /t:clean /t:build .\MyDriver.vcxproj
Syntax - To specify a specific configuration and platform, use the following command syntax:
msbuild /t:clean /t:build ProjectFile /p:Configuration=<Debug|Release> /p:Platform=architecture /p:TargetPlatformVersion=a.b.c.d /p:TargetVersion=OS
For example, the following command builds a Universal Windows driver for the "Debug" configuration, "Win32" platform, and for Windows 10.
msbuild /t:clean /t:build .\MyDriver.vcxproj /p:Configuration="Debug" /p:Platform=Win32 /p:TargetVersion=”Windows10” /p:TargetPlatformVersion=”10.0.10010.0”
The TargetPlatformVersion setting is optional and allows you to specify the kit version to build with. The default is to use the latest kit.
Configuring project properties for your driver and driver package
You use property pages to configure and set options for your driver and driver package. You can choose to configure your driver so that it is automatically signed when you build your solution, or automatically deployed to a remote test computer.
The WDK provides a number of command-line tools, such as Stampinf and WPP Preprocessor (WPP Tracing), that are commonly included in the build process. These tools are not distributed with Visual Studio. To combine these tools with the Visual Studio build environment they are wrapped as WDK tasks for MSBuild. If you use one of the driver templates or have an existing driver that you have converted, these property pages might already exist for your project. If not, the property pages are automatically added to your project as you add the related file types to the project or solution (for example, .mc or .man files for the message compiler). For more information, see WDK and the Visual Studio build environment
You can set properties for an individual driver or for an entire driver package. The following table shows some of the available properties that you can configure specifically for drivers and driver packages.
|Driver Project Properties||Driver Package Properties|
Signing properties for individual driver files (see Signing a Driver)
Signing properties for driver packages (see Signing a Driver)
|Counters Manifest Preprocessor Properties for Driver Projects (for CTRPP)|
|Driver Model Settings Properties for Driver Projects|
|Message Compiler Properties for Driver Projects|
|Stampinf Properties for Driver Projects|
|WPP Preprocessor (WPP Tracing)|
Troubleshooting tip for building a driver
The following tip can help you to troubleshoot problems when you use the WDK and Visual Studio to build drivers.
To increase the verbosity of the build output using the options in Visual Studio
- Click Tools> Options.
- Click the Project and Solutions folder and click Build and Run.
- Change the options for the MSBuild project build output verbosity and MSBuild project build log file verbosity. By default, these are set to Minimal.
- Building in Visual Studio
- Building Drivers for Different Versions of Windows
- Using the Microsoft C Runtime with User-Mode Drivers and Desktop Apps
- Creating a Driver From Existing Source Files
- WDK and the Visual Studio build environment
- Signing a Driver
- Deploying a Driver to a Test Computer