начало работы с помощью UMDF
В этом разделе описывается User-Mode Driver Framework (UMDF) и подробно описаны различия между UMDF версии 1 и 2. Он также предоставляет общие сведения об архитектуре UMDF. Используйте этот раздел, чтобы определить, подходит ли драйвер UMDF для ваших потребностей, и решить, какую версию UMDF использовать.
Windows Driver Frameworks (WDF) содержит UMDF, платформу для создания драйверов пользовательского режима. Как и Kernel-Mode Driver Framework (KMDF), UMDF предоставляет уровень абстракции из WDM, обрабатывая большую часть функций Plug and Play (PnP) и управления питанием, а также позволяя драйверу согласиться на определенные функции и обработку событий.
Начиная с Windows 8.1, существует две основные версии UMDF: версии 1 и 2. UMDF версии 1.11 (одна точка одиннадцать) является самой последней версией UMDF версии 1 и является окончательной версией до появления UMDF 2. Таблицу с полными сведениями о версии и релевантностью операционной системы см. в разделе Журнал версий UMDF.
Для написания драйвера с помощью UMDF версии 1 для написания кода C++ необходимо использовать модель com-программирования. Хотя UMDF версии 2 основана на той же концептуальной модели программирования драйверов, что и KMDF, UMDF 1 реализует модель с различными компонентами, интерфейсами драйверов устройств (DDIs) и структурами данных. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. В UMDF 1 новые функции не добавляются, а поддержка UMDF 1 в более новых версиях Windows 10 и Windows 11 ограничена.
В отличие от этого, начиная с версии UMDF 2, можно написать драйвер UMDF на языке программирования C, который вызывает многие методы, доступные для драйверов KMDF. Все интерфейсы, совместно используемые UMDF версии 2 и KMDF, имеют одинаковые имена, параметры и определения структуры. Если драйвер использует только общие функции или использует условные макросы для вызовов, поддерживаемых только одной платформой, можно написать один драйвер, который можно скомпилировать с помощью UMDF или KMDF. Дополнительные сведения см. в статье Создание драйвера UMDF из драйвера KMDF.
Несмотря на то, что UMDF 2 и KMDF имеет значительную общность, все еще существует небольшой объем функциональных возможностей, доступных только в одной или другой платформе. Особенности см. в статье Сравнение функциональных возможностей UMDF 2 с KMDF. Список всех обратных вызовов и методов UMDF UMDF 2 и KMDF, а также платформ, к которым они применяются, см. в разделе Сводка обратных вызовов и методов WDF. В некоторых случаях элемент структуры или параметр метода применяется только к одной или другой платформе. Эти различия описаны в документации на соответствующих справочных страницах.