Introduction to WDM
This section contains guidance on WDM drivers, which is no longer the recommended driver model. For guidance on choosing a driver model, see Choosing a driver model.
To allow driver developers to write device drivers that are source-code compatible across all Microsoft Windows operating systems, the Windows Driver Model (WDM) was introduced. Kernel-mode drivers that follow WDM rules are called WDM drivers.
All WDM drivers must do the following:
Include Wdm.h, not Ntddk.h. (Note that Wdm.h is a subset of Ntddk.h.)
Be designed as a bus driver, a function driver, or a filter driver, as described in Types of WDM Drivers.
Support Plug and Play (PnP).
Support power management.
Support Windows Management Instrumentation (WMI).
Should You Write a WDM Driver?
If you are writing a new driver, consider using the Kernel-Mode Driver Framework (KMDF). KMDF provides interfaces that are simpler to use than WDM interfaces.
Do not write a WDM driver if the driver will be inserted into a stack of non-WDM drivers. Please read the documentation for device type-specific Microsoft-supplied drivers to determine how new drivers must interface with Microsoft-supplied drivers. For more device type-specific information, see Device and Driver Technologies.)