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.
Create device objects as described in WDM Device Objects and Device Stacks.
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.)