Windows Driver Kit: Getting Started with Windows Drivers
Choosing a Driver Model

The Microsoft Windows Driver Kit (WDK) supports several driver models, or sets of interfaces. A driver that is designed to use a particular driver model must use the model's interfaces. The WDK supports the following driver models:

Windows Driver Model
Most Windows drivers are kernel-mode drivers that conform to the Windows Driver Model (WDM). WDM drivers use a set of interfaces that enable the driver to communicate with kernel-mode Windows components, such as the I/O manager and the Plug and Play (PnP) manager. For more information about WDM, see Windows Driver Model.
Kernel-Mode Driver Framework
Kernel-Mode Driver Framework (KMDF) is a library that you can use to create WDM drivers. KMDF provides a set of interfaces that are easier to use than WDM interfaces. For more information about KMDF, see Getting Started with Kernel-Mode Driver Framework.
User-Mode Driver Framework
User-Mode Driver Framework (UMDF) enables you to write user-mode drivers for some types of devices. If UMDF supports your device type, you should write a user-mode driver instead of a kernel-mode driver. For more information about UMDF and the types of devices that UMDF supports, see Introduction to UMDF.
Device type–specific models
Drivers for some types of devices must use a driver model that is specific to the device type. These drivers communicate with Microsoft-supplied drivers (such as kernel-mode class or port drivers or user-mode drivers) that provide their own sets of interfaces. To find out if a type-specific driver model exists for your device, see the device-type specific documentation within the Device and Driver Technologies section of the WDK documentation.

In general, you should develop a user-mode driver or application, if user-mode interfaces provide the capabilities that your driver requires. User-mode interfaces include UMDF and some technology-specific, user-mode interfaces such as WinUSB for USB devices and Windows Portable Devices (WPD) for portable devices.

The next-best choice is a KMDF-based kernel-mode driver. If your device requires a kernel-mode, device type–specific model that KMDF does not support, use the device type–specific model instead of KMDF. Finally, if no other model works for your device, you can develop a WDM-based kernel-mode driver.

Regardless of the driver model that you decide to use, you must read the technology-specific section of the WDK documentation to understand how your driver must communicate with other drivers for your device.

The following table lists some common device types and the driver models that you should typically use for those device types. Use the links under More Information to find information about the driver interfaces for each device type.

Device or Driver typeRecommended Driver ModelMore Information
1394 deviceDepends on device setup class: KMDF or WDM The IEEE 1394 Driver Stack
Audio devicesAVStream, PortCls Roadmap for Developing WDM Audio Drivers
Auxiliary display (SideShow)Windows Portable Devices (WPD)See WPD documentation in the WDK.
Biometric (USB)UMDF Roadmap for Developing Biometric Drivers
Bluetooth L2CAPDepends on device class: KMDF or device-class-specific model such as AVStream Bluetooth Profile Drivers Overview
Bluetooth Radio Frequency Communications (RFCOMM)UMDF Bluetooth Profile Drivers Overview
Cell phone, PDA, portable media playerWindows Portable Devices (WPD) See WPD documentation in the WDK.
Digital cameraDepends on device characteristics: Media Transfer Protocol (MTP)/UMDF or WIA Windows Image Acquisition Drivers
Display adapterWindows Display Driver Model Roadmap for Developing Drivers for the Windows Vista Display Driver Model
Filter, file systemFile system minifilter drivers File System Minifilter Drivers
Filter, networkWindows Filtering Platform (WFP) callout driver Roadmap for Developing WFP Callout Drivers
Filter, otherUMDF or KMDF Filter Drivers
Human input device (HID)UMDF (except for mouse and keyboard) or KMDF Windows Touch Overview
General Requirements on HIDClass Drivers
Keyboard/Mouse filterKMDF Non-HIDClass Keyboard and Mouse Devices
Location sensorsSensor and Location Platform Introduction to the Sensor and Location Platform in Windows
ModemMicrosoft-supplied Overview of Modem INF Files
Cable modemKMDF, WDM, or NDIS-WDM
Network-connected deviceUMDF Aa906308.internet_link_sm(en-us,MSDN.10).gifWeb Services for Devices
Network adapter, USBRemote NDIS, NDIS-KMDF Remote NDIS (RNDIS)
Creating Framework-based Miniport Drivers
Network adapterDepends on device setup class Using the Network Driver Design Guide
Parallel port devicesUMDF or KMDF Introduction to Parallel Ports and Devices
PC cardMicrosoft-supplied or KMDF PCMCIA Bus Design Guide
PCI devicesMicrosoft-supplied or KMDF PCI Bus Design Guide
PrinterUniDrv, PScript, XPS Introduction to Printing
ScannerWIA Windows Image Acquisition Drivers
Secure digital (SD)Depends on device setup class: KMDF or WDM SD Bus Design Guide
Serial port devicesUMDF or KMDF Serial Devices and Drivers
Smart cardUMDF if USB-connected. Otherwise, KMDF. Vendor-Supplied Smart Card Reader Drivers
Storage devices on storage buses (SCSI, ATA)Scsiport, Storport, ATA port Storage Devices
Touch devicesMicrosoft-supplied, or KMDF Windows Touch Overview
USB deviceDepends on device setup class: WinUSB, UMDF, KMDF, or WDM WinUSB
USB Design Guide
Video captureAVStream Roadmap for Developing Streaming Minidrivers


Send feedback on this topic
Built on October 01, 2009
Page view tracker