Windows Driver Kit: Kernel-Mode Driver Architecture
Introduction to WDM
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:
Does the WDK Cover Non-WDM Drivers?
The Windows Driver Kit (WDK) emphasizes the development of WDM drivers for kernel mode, but the WDK also includes information that is pertinent to kernel-mode drivers that do not follow WDM rules. This information allows you to maintain existing non-WDM drivers and to write new drivers that interface with these existing drivers.
Should You Always Write a WDM Driver?
If you are writing new kernel-mode drivers, they should be WDM drivers, unless you are writing a driver that 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. (This device type–specific information is included in the WDK documentation within the Device and Driver Technologies section.)
Note All new driver stacks should consist of WDM drivers.
There are cross-platform issues to consider, whether you are developing WDM or non-WDM drivers. For more information, see Writing Drivers for Multiple Platforms and Operating Systems.
If you are writing a new WDM driver, you should also consider using Kernel-Mode Driver Framework (KMDF). KMDF provides interfaces that are simpler to use than WDM interfaces.