2013-05-15 2 views
5

При создании проекта Windows Driver в Visual Studio 2012 у вас есть много разных вариантов.В чем разница между драйвером WDM, драйвером KMDF и драйвером UMDF?

У вас есть page on MSDN, который поможет вам выбрать правильную модель драйвера для вашего устройства. Однако он не дает четкого объяснения точных различий между типами драйверов WDM, KMDF и UMDF и когда выбирать, какую модель.

Я ищу объяснение различий между моделями драйверов WDM, KMDF и UMDF, поэтому начинающим разработчикам драйверов Windows легко выбрать правильную модель.

ответ

10

В двух словах:

  • WDM означает Windows Driver Model. Каждый драйвер ядра - это, по сути, драйвер WDM.
  • KMDF означает Ядерный режим драйвера. Это структура, которая инкапсулирует и скрывает многие аспекты программирования ОС, к которым должен обратиться разработчик драйверов, даже если он не имеет ничего общего с бизнес-логикой его драйвера. Некоторая функциональность не существует в рамках KMDF и потребует собственных вызовов ядра без использования фреймворка (но в большинстве случаев это не так).
  • UMDF означает «Пользовательский режим». Это дополнительная структура для KMDF, и вместе они составляют WDF (Windows Driver Frameworks). UMDF позволяет создавать драйвер в пользовательском режиме, имея все преимущества программирования пользовательского режима и режима ядра. Естественно, драйвер UMDF имеет ограничения по сравнению с драйверами KMDF/WDM, и в большинстве случаев для этого потребуется копия ядра с хотя бы некоторыми функциями.

Страница, на которую вы ссылаетесь, довольно подробно. Вы должны жить в нем для более глубокого понимания.

+1

Спасибо за объяснение, но пока еще не совсем ясно. Вы говорите, что каждый драйвер ядра является WDM-драйвером, но все ли драйверы драйверов WDM-драйверов? Почему WDM и KMDF два разных шаблона в VS2012? – lesderid

+3

@lederid думает об этом с точки зрения Win32 и MFC (надеюсь, вы знакомы с обоими). Хотя каждая программа MFC является программой Win32, не каждая программа Win32 является программой MFC. KMDF сродни MFC: структура, которая может быть использована для скрытия некоторой сложности WDM.Итак, шаблоны отличаются тем, что они генерируют разные: один генерирует один вид проекта, а другой генерирует другой вид. Чтобы ответить на ваш другой вопрос, все современные драйверы * ядра * являются драйверами WDM; хотя есть и другие «устаревшие» модели драйверов ядра, они официально не поддерживаются и больше не должны использоваться. –

5

Мне нравится articel из MSDN: Differences Between WDM and KMDF

  • WDM является модель драйверов, так как драйверы устройств PnP (> = Win2k). В этой модели вы должны обрабатывать функции, не относящиеся к вашей функциональности. Уолтер Оней (программирование модели драйверов Microsoft Windows) передал такие функции внешним библиотекам драйверов устройств для повторного использования.

  • WDF/kmdf пытается упростить разработку драйверов устройств. Функции могут быть перезаписаны или используется обработчик по умолчанию. Администрирование памяти и очередей было значительно упрощено и обеспечено.

  • UMDF попытался использовать аналогичные вызовы функций в пользовательском режиме как вызовы функций в режиме ядра.

Надеюсь, не поздно. Дата вопроса впервые увидела, когда я закончил писать!

+1

KMDF + UMDF = WDF – SomeWittyUsername