Windows Driver Frameworks

What is it

Windows Driver Frameworks (WDF) is a set of libraries that you can use to develop device drivers that are interoperable with Windows. WDF is comprised of Kernel-Mode Driver Framework (KMDF) and User-Mode Driver Framework (UMDF).

Where applicable

A KMDF or UMDF driver is the software installed on the computer that communicates with the hardware to make the device function. If the device belongs to a device class supported by Microsoft, Windows loads one of the in-box class drivers for the device. Otherwise, a custom driver must be provided by the hardware manufacturer or a third party vendor. The user installs the driver for the device when the device is first detected by Windows. After successful installation, Windows loads the client driver every time the device is attached and unloads the driver when the device is detached from the host computer.

You can develop a custom driver for a hardware device by using WDF or the Windows Driver Model (WDM). The topics in this section describe the callback functions that a driver needs to provide, and the device driver interfaces (DDIs) that the driver must call.

Developer audience

This section is intended for use by C/C++ programmers. Before you use this section, you should understand basic driver development. For more information, see Getting Started with Windows Drivers.

Development requirements

To write WDF drivers, you need the Windows Driver Kit (WDK), which is integrated with Microsoft Visual Studio Professional. The WDK contains resources that are required for driver development, such as headers, libraries, and tools. Optionally, you can download driver samples and debugging tools.

To create a driver that uses KMDF or UMDF, you can use a template in Visual Studio. For step-by-step guidance, see Writing your first driver. You can use Visual Studio to build WDF drivers for Windows Vista and later. For general information about developing drivers in Visual Studio, see Developing, Testing, and Deploying Drivers.

Related resources

WDF Documentation Sections




Send comments about this topic to Microsoft