База полезных знаний

Windows Driver Foundation

Набор инструментальных средств Windows Driver Foundation (WDF) упрощает разработку драйверов Windows, предоставляя для этого две среды: Kernel-Mode Driver Framework (KMDF) и User-Mode Driver Framework (UMDF).

Разработчики могут использовать KMDF для написания драйверов для Windows 2000 SP4 и более поздних версий, в то время как UMDF поддерживает Windows XP и более поздние версии.

KMDF предоставляет простой интерфейс к WDM и скрывает все ее сложности от создателя драйвера, не изменяя исходной модели «шина-функция-фильтр».

Драйверы KMDF отвечают за события, которые могут быть ими зарегистрированы, и осуществляют вызовы к библиотеке KMDF для выполнения работы, неспецифичной для управляемого ими оборудования, например, для общего управления электропитанием или для синхронизации. (Ранее это должен был самостоятельно реализовывать каждый драйвер.) В некоторых случаях более чем 200 строк кода WDM можно заменить одним лишь вызовом функции KMDF.

UMDF позволяет создавать драйверы определенных классов (главным образом основанные на USB или других шинах, использующих протокол с большими задержками), например, драйверы для видеокамер, MP3-плееров, мобильных телефонов, наладонников и принтеров, которые могут быть реализованы как драйверы пользовательского режима.

По сути UMDF запускает каждый драйвер пользовательского режима в виде службы пользовательского режима и использует ALPC для связи с драйвером-упаковщиком режима ядра, предоставляющего фактический доступ к оборудованию. Если UMDF-драйвер попадает в аварийную ситуацию, процесс завершается и, как правило, перезапускается, поэтому система сохраняет стабильность — устройство просто становится недоступным, пока перезапускается служба, являющаяся хозяином драйвера. И наконец, UMDF-драйверы пишутся на C++ с использованием COM-подобных классов и семантики, тем самым еще больше понижая планку для программистов, пишущих драйверы устройств.

Эксперимент: просмотр установленных драйверов устройств.

Получить перечень установленных драйверов можно путем запуска Msinfo32. (Для запуска этого средства щелкните на кнопке "Пуск" (Start), наберите "Msinfo32" и нажмите клавишу "Ввод".) В разделе "Сведения о системе" (System Summary) раскройте пункт "Программная среда" (Software Environment) и откройте окно "Системные драйверы" (System Drivers).

Пример вывода перечня установленных драйверов имеет следующий вид.

В этом окне выведен перечень драйверов устройств, обнаруженных в реестре с указанием их типов и состояния — Running (работает) или Stopped (остановлен). И драйверы устройств, и процессы служб Windows определены в одном и том же месте:

HKLM\SYSTEM\CurrentControlSet\Services.

Но они различаются по типу кода, например, тип 1 относится к драйверу устройства режима ядра.

Также перечень текущих загруженных драйверов устройств можно получить, выбрав System process в Process Explorer и открыв просмотр DLL.

Exit mobile version