10 out of 24 rated this helpful - Rate this topic

Write a UMDF driver based on a template

To write a UMDF driver, you need the Windows Driver Kit (WDK), which is integrated with Microsoft Visual Studio 2012, and Debugging Tools for Windows. You can use a Microsoft Visual Studio template as a starting point.

To set up the integrated development environment, first install Visual Studio and then install the WDK. You can find information about how to get Visual Studio and the WDK here.

Debugging Tools for Windows is included when you install the WDK. For more information, see Download and Install Debugging Tools for Windows.

Creating and building a driver package

To create and build a UMDF driver from a template:

  1. Open Visual Studio. On the File menu, choose New > Project. The New Project dialog box opens, as shown in the following screen shot.
  2. In the New Project dialog box, in the left pane, locate and select WDF.
  3. In the middle pane, select User Mode Driver (UMDF).
  4. In the Name field, enter "UmdfHelloWorld" as the project name.
  5. In the Location field, enter the directory where you want to create the new project.
  6. Check Create directory for solution. Click OK.

    Screen shot of the New Project dialog box, showing WDF and User Mode Driver selected

    Visual Studio creates two projects and a solution. You can see the solution, the two projects, and the files that belong to each project in the Solution Explorer window. (If the Solution Explorer window is not visible, choose Solution Explorer from the View menu.) The solution contains a driver project named UmdfHelloWorld and a driver package project named UmdfHelloWorld Package. If you want to look at the driver source code, you can open any of the files that appear under Source Files. Driver.cpp and Device.cpp are good places to start.

    Screen shot of Solution Explorer showing the files in the driver project and the package project
  7. In the Solution Explorer window, right-click Solution 'UmdfHelloWorld' (2 projects), and choose Configuration Manager. Choose a configuration and platform for both the driver project and the package project. In this exercise, we choose Win7 Debug and x64, as shown in the following screen shot.

    Screen shot of the Configuration Manager window with Win7 DeBug and x64 selected
  8. To build your driver and create a driver package, choose Build Solution from the Build menu. Microsoft Visual Studio displays build progress in the Output window, as shown in the following screen shot. (If the Output window is not visible, choose Output from the View menu.)

    Screen shot of the Output window showing that the build succeeded

    When you have verified that the solution built successfully, you can close Visual Studio.

  9. To see the built driver package, navigate in Windows Explorer to your UmdfHelloWorld folder, and then navigate to x64 > Win7Debug > UmdfHelloWorld Package. The driver package contains several files: UmdfHelloWorld.dll is the user-mode driver file, UmdfHelloWorld.inf is an information file that Windows uses when you install the driver, and UmdfHelloWorld.cat is a catalog file that contains a test signature for the package. The other files are co-installers for the Windows Driver Frameworks (WDF) and WinUSB. These files are shown in the following screen shot.

    Screen shot of the UmdfHelloWorld Package folder, showing the different files

Deploying and installing the driver

Typically when you test and debug a driver, the debugger and driver run on separate computers. The computer that runs the debugger is called the host computer, and the computer that runs the driver is called the target computer. The target computer is also called the test computer.

So far in this exercise, you have used Visual Studio on the host computer to build a driver. Next you need to configure a target computer. To configure a target computer, follow the instructions in Configuring a Computer for Testing and Debugging. After you have configured a target computer, you can deploy, install, load, and debug your driver by following these steps:

  1. On the host computer, open your solution in Visual Studio. One way to do that is to double-click the solution file, UmdfHelloWorld.sln, in your UmdfHelloWorld folder.
  2. In the Solution Explorer window, right-click UmdfHelloWorld Package, and choose Properties.
  3. In the UmdfHelloWorld Package Property Pages window, in the left pane, navigate to Configuration Properties > Driver Install > Deployment, as shown in the following screen shot.
  4. Check Enable deployment, and check Remove previous driver versions before deployment.
  5. For Remote Computer Name, select the name of the computer that you configured for testing and debugging. In this exercise, we use a computer named MyTestComputer.
  6. Select Hardware ID Driver Update, and enter the hardware ID for your driver. In this exercise, the hardware ID is Root\UmdfHelloWorld. Click OK.

    Screen shot of the UmdfHelloWorld Package Property Pages, showing Deployment Driver Install selected

    Note  

    In this exercise, the hardware ID does not identify a real piece of hardware. It identifies an imaginary device that will be given a place in the device tree as a child of the root node. For real hardware, do not select Hardware ID Driver Update; instead, select Install and Verify.

    You can see the hardware ID in your driver's information (INF) file. In the Solution Explorer window, navigate to UmdfHelloWorld > Driver Files, and double-click UmdfHelloWorld.inf. The hardware ID is under [Standard.NT$ARCH$].

    
    [Standard.NT$ARCH$]
    %DeviceName%=MyDevice_Install,Root\UmdfHelloWorld
    
    
  7. On the Debug menu, choose Start Debugging, or press F5 on the keyboard.
  8. Wait until your driver has been deployed, installed, and loaded on the target computer. This might take several minutes.

Related topics

Developing, Testing, and Deploying Drivers
Windows Debugging
Writing a KMDF driver based on a template
Writing a very small KMDF driver
Writing your first driver

 

 

Send comments about this topic to Microsoft

Build date: 11/23/2012

© 2013 Microsoft. All rights reserved.