- Windows Driver Model
In
computing , the Windows Driver Model (WDM) — also known at one point as the Win32 Driver Model — is a framework fordevice driver s that was introduced withWindows 98 andWindows 2000 to replaceVxD , which was used on older versions of Windows such asWindows 95 and Windows 3.1, as well as the Windows NT Driver Model.Overview
WDM drivers are layered in a complex hierarchy and communicate with each other via
I/O request packets (IRPs). The Microsoft Windows Driver Model defined a unified driver model for the Windows 98 and Windows 2000 lines by standardizing requirements and reducing the amount of code that needed to be written. WDM drivers will not run on operating systems earlier than Windows 98 or Windows 2000, such as Windows 95, Windows NT 4.0 and Windows 3.1. By conforming to WDM, drivers can bebinary compatible and source-compatible across Windows 98, Windows 98 Second Edition,Windows Me , Windows 2000,Windows XP ,Windows Server 2003 andWindows Vista (for backwards compatibility) onx86 -based computers. WDM drivers are designed to be forward-compatible so that a WDM driver can run on a version of Windows newer than what the driver was initially written for , but doing that would mean that the driver cannot take advantage of any new features introduced with the new version. WDM is generally not backward-compatible, that is, a WDM driver is not guaranteed to run on any older version of Windows. For example,Windows XP can use a driver written forWindows 2000 but will not make use of any of the new WDM features that were introduced in Windows XP. However, a driver written for Windows XP may or may not load on Windows 2000.WDM exists in the intermediary layer of Windows 2000
kernel-mode drivers and was introduced to increase the functionality and ease of writing drivers for Windows. Although WDM was mainly designed to be binary and source compatible betweenWindows 98 and Windows 2000, this may not always be desired and so specific drivers can be developed for either operating system. WDM drivers can be classified into the following types and sub-types:Device function drivers
A function driver is the main driver for a device. A function driver is typically written by the device vendor and is required (unless the device is being used in raw mode). A function driver can service one or more devices.
*Class driver s: These are a type of "function drivers" and can be thought of as built-in "framework" drivers thatminiport and otherclass driver s can be built on top of. Theclass driver s provide interfaces between different levels of the WDM architecture. Common functionality between different classes of drivers can be written into the class driver and used by other class andminiport drivers. The lower edge of the class driver will have its interface exposed to theminiport driver, while the upper edge of top level class drivers is operating system specific. Class drivers can be dynamically loaded and unloaded at will. They can do class specific functions that are not hardware or bus-specific (with the exception of bus-type class drivers) and in fact sometimes only do class specific functions likeenumeration .
*Miniport drivers: These are also "function drivers" forUSB , Audio,SCSI and network adapters. They should usually be source and binary compatible between Windows 98 and Windows 2000 and are hardware specific but control access to the hardware through a specific busclass driver .Bus drivers
A bus driver services a bus controller, adapter, or bridge. Microsoft provides bus drivers for most common buses, such as PCI, PnPISA,
SCSI ,USB andFireWire . Each software vendor can create their own bus drivers if needed. A bus driver can service more than one bus if there is more than one bus of the same type on the machine.Filter drivers
Filter driver s are optional drivers that add value to or modify the behavior of a device and may be non-device drivers. Afilter driver can also service one or more devices. Upper level filter drivers sit above the primary driver for the device (the function driver), while lower level filter drivers sit below the function driver and above the bus driver.
* Driver service: This is a type of kernel-level filter driver implemented as aWindows service that enables applications to work with devices.VxD, WDM and Windows 98
Windows 98 based operating systems (Windows 98, Windows 98 Second Edition, and Windows Me) are able to use both WDM and
VxD (Virtual device driver) driver standards. Both drivers models can provide unique and different features for the same hardware. However, usually the newer WDM standard provides more features. For example, if aTV tuner card using aVxD driver is able to capture images at a resolution of 384 x 288 pixels, the same TV Tuner card with the WDM driver model may be able to capture at a resolution of 768 x 576 pixels. This can be attributed to the newBroadcast Driver Architecture model which is part of WDM.Criticism
The Windows Driver Model, while a significant improvement over the
VxD and Windows NT driver model used before it, has been criticised by driver software developers [http://www.wd-3.com/archive/FrameworkIntro.htm] , most significantly for the following:* WDM has a very steep learning curve.
* Interactions withpower management events andPlug-and-play are difficult. This leads to a variety of situations where Windows machines cannot go to sleep or wake up correctly due to bugs in driver code.
* I/O cancellation is almost impossible to get right.
* Thousands of lines of support code are required for every driver.
* No support for writing pureuser-mode drivers.There were also a number of concerns about the quality of documentation and samples that Microsoft provided.
Because of these issues, Microsoft has released a new framework to replace WDM, called the
Windows Driver Foundation , which includesKernel-Mode Driver Framework (KMDF) andUser-Mode Driver Framework (UMDF).Windows Vista supports both WDM and the newerWindows Driver Foundation . KMDF is also available for download for Windows XP and even Windows 2000, while UMDF is available for Windows XP.ee also
*
Windows Driver Foundation
*Kernel-Mode Driver Framework
*User-Mode Driver Framework
**Windows Display Driver Model References
* Finnel, Lynn (2000). "MCSE Exam 70-215, Microsoft Windows 2000 Server".
Microsoft Press . ISBN 1-57231-903-8.* Oney, Walter (2003). "Programming the Windows Driver Model",
Microsoft Press , ISBN 0-7356-1803-8.External links
* [http://www.staudio.de/kb/english/drivers/ Windows driver API basics] - This article informs you about the basics behind soundcard drivers such as WDM, ASIO, MME, DirectX, etc.
* [http://channel9.msdn.com/Showpost.aspx?postid=156316 Channel 9 Video] - Interview with the Device Management and Installation team at Microsoft, primarily coveringPlug-and-play .
Wikimedia Foundation. 2010.