Программирование драйверов Windows

       

WDM, Windows Driver Model


Драйверная модель для Windows. Ориентирована на устройства, поддерживающие спецификацию PnP (в особенности, самоидентификацию — сообщение своих идентификационных номеров — при подключении к соответствующей шине). В драйвер WDM модели введены новые рабочие процедуры, которые отражают стадии подключения-обнаружения PnP устройства, события в изменении энергоснабжения и факт отключения устройства. "Правильное" PnP устройство обнаруживается шинным драйвером (той шины, к которой оно подключается), затем о нем узнает PnP Менеджер, после чего и загружается драйвер — в соответствии с полученными идентификаторами. Если WDM драйвер "правильный", то он должным образом подключает себя к стеку драйверов на этой шине. После этого почти все в дальнейшей жизни драйвера зависит от обращения с IRP запросами к драйверам, подключившимся к стеку ранее (начиная от запросов о конфигурации шины и заканчивая запросами к "своему" устройству). Драйвер модели WDM использует только определения, доступные из файла wdm.h, в результате чего не может использовать "полупартизанские" функции прежних NT-драйверов (функции типа HalGetBusData и т.п.). Драйверы модели WDM зачастую полностью (вплоть до бинарной формы) совместимы для использования в Windows 98, Windows Me, Windows 2000, Windows XP и Windows Server 2003, хотя бывают и исключения.

Разумеется, можно не поддерживать обработку всех требуемых для PnP драйверов запросов, что вполне приемлемо для драйверов, которые нужны лишь в качестве окна в режим ядра. Однако для таких исследований проще использовать драйверы "в-стиле-NT" (NT style или legacy драйверы, о чем рассказывается ниже).



Содержание раздела