Windows Driver Model (WDM) - фреймворк для драйверів пристроїв (також відомий як Win32 Driver Model і Windows NT Driver Model), був введений в Windows 98 і Windows 2000 для заміни застарілого VxD, який використовувався в старих версіях Windows таких як Windows 95 і Windows 3.1.


1. Огляд

Microsoft Windows Driver Model визначає уніфіковану модель драйвера для операційних систем Windows 98, Windows 2000 і старше, стандартизуючи вимоги і зменшуючи кількість коду, необхідне для написання драйвера. У відповідності з концепцією WDM, драйвери можуть бути бінарному сумісні. Так, наприклад, драйвер для платформи x86, написаний для Windows 98 може підійти і до Windows Me, і до Windows 2000, і навіть до Windows Vista. WDM-драйвера спроектовані для прямої сумісності, тому такий драйвер може бути запущений на більш пізньої версії Windows, ніж та, для якої він був спочатку написаний. Але це також означає, що драйвер не зможе використовувати нові можливості нової версії WDM-фреймворку. WDM-драйвера, головним чином, назад не сумісні. Це означає, що немає ніяких гарантій, що такий драйвер запуститься на версії Windows, більш старої ніж та, для якої він був написаний. Наприклад, Windows XP може використовувати драйвер, написаний для Windows 2000, але цей драйвер не може використовувати нові можливості, додані в Windows XP. Однак, драйвер, написаний для Windows XP, може працювати в Windows 2000, а може і не працювати.

WDM-драйвери взаємодіють один з одним через пакети запиту вводу - виводу (IRPs).

Технологія WDM була розроблена для збільшення функціональності і полегшення написання драйверів для Windows. Хоча WDM в основному був розроблений для бінарної сумісності і сумісності на рівні вихідного коду між Windows 98 і Windows 2000, найчастіше це не завжди очікувано і тому специфічні драйвера розробляються для кожної операційної системи окремо.

WDM драйвера призначені в загальному для розширення стандартних можливостей основного драйвера.


2. VxD, WDM і Windows 98

Операційні системи, засновані на Windows 98 (Windows 98, Windows 98 Second Edition і Windows Me), можуть використовувати обидва стандарту драйверів - WDM і VxD. Обидві моделі драйверів можуть надавати унікальні і різні можливості для одного і того ж пристрою. Однак, зазвичай більш новий стандарт WDM надає більше можливостей. Наприклад, якщо TV-тюнер використовує VxD-драйвер, це дозволяє захоплювати зображення дозволом 384 x 288 пікселів. Той же TV-тюнер з драйвером WDM може захоплювати зображення дозволом 768 x 576 пікселів.


3. Критика

Windows Driver Model, навіть незважаючи на значні поліпшення в порівнянні з попередніми йому VxD і Windows NT driver model, критикується розробниками драйверів [1], в основному з наступних причин:

  • WDM занадто складний для вивчення.
  • Складна взаємодія з подіями управління живленням і Plug and Play. Це призводить до безлічі ситуацій, коли комп'ютери, керовані Windows, не можуть перейти в сплячий режим або правильно вийти з нього через помилки в коді драйвера.
  • Скасування введення / виводу практично неможливо правильно визначити.
  • Для кожного драйвера потрібні тисячі рядків супроводжуючого коду.
  • Немає підтримки для написання "чистих" драйверів користувацького режиму.

Було також багато проблем через якість документації і прикладів, що надаються Microsoft.

Через цих проблем Microsoft випустила новий фреймворк, який замінює WDM, названий Windows Driver Foundation, який включає в себе Kernel-Mode Driver Framework (KMDF) і User-Mode Driver Framework (UMDF). Windows Vista підтримує обидва стандарти: і WDM, і новий Windows Driver Foundation. KMDF також доступний для скачування для Windows XP і навіть Windows 2000, в той час, як UMDF доступний починаючи тільки з Windows XP.


Література

  • 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.