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 | |
Internal device control requests (IOCTLs) | |
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.