Microsoft Windowsで使われるデバイスドライバの規格。
元々はWindows 98とWindows 2000以降で搭載される、Win32用デバイスドライバの統一規格のことを指した。
Windows 95 OSR2で、Windows 98に先立って実装されている。
Windows 95は、DOS用ドライバ、Windows 3.1用ドライバ (拡張子.386)に加え、VxDと呼ばれるWindows 95用のドライバ(拡張子.vxd)をサポートしている。これらはWindows 3.1からの継承品でモノリシックドライバであった。
これらはWindows NT系列のマイクロカーネル思想からは相容れない構造である。周辺機器の高度化、Windowsの機能強化に伴いドライバの開発そのものが難しくなってきていた。
また、新たに登場したUSBやIEEE 1394をサポートするにあたって、そのコントローラを担当するドライバと、それに接続される周辺機器に対するドライバに分離して開発する必要があったが、モノリシックドライバではそのようなサポートは不可能だった。Windows 95でUSBやIEEE 1394のサポートがすぐに実現できなかった理由もここにある。
Microsoftは将来的にWindowsのメインストリームをNT系列とすることを決定していたが、当時はパソコンの能力不足からそれは叶わず、信頼性を落とす代わりにパフォーマンスアップを図り、Windows 3.1とある程度の互換性があるWindows 95をメインストリームとしていた。
しかし、前述したとおりWindows 95ではドライバの構造に難があり、同じものをWindows NTで使うことは出来ない(Windows NTのドライバは最初から階層構造である)。
そのため、周辺機器メーカーはメインストリームであるWindows 95用ドライバの開発に注力し、Windows NTのドライバの開発は停滞してしまう、結果としてNTは普及しない、というジレンマを抱えていた。
そこでMicrosoftは、Windows 2000のドライバモデルを開発するにあたって、次のような野心的な(しかし無謀な)プランを立てた。
これにより、ドライバモデルは近代的なものになり、Windows 2000における周辺機器のサポートも充実するという一石二鳥の効果が狙えると考えられた。
Microsoftの掲げた理想は高かったが、現実問題としてWindows 98とWindows 2000との間で完全に同じドライバを使いまわすことはできなかった。オペレーティングシステム(OS)の構造があまりにも違いすぎたのである。
それでも、Windowsのドライバモデルのほとんどが共通化されたという点で大きな進歩であり、これ以降Windows 2000のドライバも数多く出回るようになった。これが、Windows 98からWindows 2000へユーザを移行させる大きな力ともなった。
だが、最終的にMicrosoftはWDMのバイナリ互換性については放棄せざるを得なくなった。OSが64ビット化する時代が訪れたからである。
現状では、64ビットマイクロプロセッサのサポート開始と共にドライバモデルはソースコード互換性に切り替えられ、それに伴いWin32 Driver ModelはWindows Driver Modelと改称された。