WDM Driver
All WDM drivers must:
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.
Support power management.
Support Windows Management Instrumentation (WMI)
There are three kinds of WDM drivers:
Bus drivers, which drive an I/O bus and provide per-slot functionality that is device-independent.
Function drivers, which drive an individual device.
Filter drivers, which filter I/O requests for a device, a class of devices, or a bus.
