Comparing UMDF 2 Functionality to KMDF

This topic compares the functionality available to a Kernel-Mode Driver Framework (KMDF) driver with that available to a User-Mode Driver Framework (UMDF) 2 driver. It is designed to help you decide whether you should write a UMDF 2 driver or a KMDF driver.

While UMDF version 2 offers a significant subset of functionality that was previously available only to KMDF drivers, the following features are available only to KMDF drivers. If your driver requires one of these features, you must write a KMDF driver.

Feature Related information
Direct memory access (DMA) Handling DMA Operations in KMDF Drivers
Bus enumeration Enumerating the Devices on a Bus
Functional power states (limited support is available in UMDF) Supporting Functional Power States
Access to WDM objects and IRPs Obtaining WDM Information
Neither Buffered Nor Direct I/O

Accessing Data Buffers in WDF Drivers

Intercepting an I/O Request before it is Queued

Internal device control requests (IOCTLs)

Sending I/O Requests Synchronously

Sending I/O Requests Asynchronously

Remove lock opt-in for I/O requests WdfDeviceInitSetRemoveLockOptions
WMI Introduction to WMI for KMDF Drivers

If your driver does not require any of the above, you can write a UMDF 2 driver instead of using KMDF. Because the two frameworks share many interfaces, you can convert your driver to KMDF later if the need arises. For information about why you might want to choose UMDF, see Advantages of Writing UMDF Drivers.

For more information about the framework objects and which are supported by KMDF and UMDF, see Summary of Framework Objects.

For a table showing all Windows Driver Frameworks (WDF) callbacks and methods and their framework applicability, see Summary of WDF Callbacks and Methods.