Написание универсального драйвера Windows (UMDF 2) на основе шаблона
В этом разделе описывается, как написать универсальный драйвер Windows с помощью среда выполнения платформы драйвера режима пользователя (UMDF) 2. Вы начнете с шаблона Microsoft Visual Studio, а затем развернете и установите драйвер на отдельном компьютере.
Чтобы приступить к работе, убедитесь, что у вас есть последняя версия Microsoft Visual Studio и комплект драйверов Windows (WDK). Ссылки на скачивание см. в разделе "Скачать комплект драйверов Windows( WDK)".
Средства отладки для Windows включаются при установке WDK.
Создание и сборка драйвера
Примечание.
При создании нового драйвера KMDF или UMDF необходимо выбрать имя драйвера с 32 символами или меньше. Это ограничение длины определяется в wdfglobals.h.
Откройте Visual Studio. В меню "Файл" выберите "Создать > проект".
В диалоговом окне "Создание проекта" выберите C++ в раскрывающемся списке слева, выберите Windows в среднем раскрывающемся списке и выберите "Драйвер" в правом раскрывающемся списке.
Выберите драйвер пользовательского режима (UMDF версии 2) из списка типов проектов. Выберите Далее.
В диалоговом окне "Настройка нового проекта" введите "UmdfDriver" в поле "Имя проекта".
Примечание.
При создании нового драйвера KMDF или UMDF необходимо выбрать имя драйвера с 32 символами или меньше. Это ограничение длины определяется в wdfglobals.h.
В поле "Расположение" введите каталог, в котором нужно создать проект.
Проверьте решение и проект в том же каталоге и нажмите кнопку "Создать".
Visual Studio создает один проект и решение. Вы можете просмотреть их в обозревателе решений. (Если Обозреватель решений окно не отображается, выберите Обозреватель решений в меню "Вид".) Решение имеет проект драйвера с именем UmdfDriver. Чтобы просмотреть исходный код драйвера, откройте любой из файлов в разделе "Исходные файлы". Driver.c и Device.c — хорошие места для начала.
В окне Обозреватель решений выберите решение UmdfDriver (1 из 1 проекта) и выберите Configuration Manager и удерживайте его (или щелкните правой кнопкой мыши). Выберите конфигурацию и платформу для проекта драйвера. Например, выберите "Отладка " и "X64".
В окне Обозреватель решений выберите и удерживайте (или щелкните правой кнопкой мыши) UmdfDriver и выберите "Свойства". Перейдите к разделу "Параметры драйвера свойств > конфигурации>" и обратите внимание, что целевая платформа по умолчанию используется для универсальной.
Чтобы создать драйвер, выберите "Создать решение " в меню "Сборка ". Microsoft Visual Studio отображает ход сборки в окне вывода . (Если Окно вывода не отображается, выберите "Выходные данные " в меню "Вид ".)
Убедитесь, что выходные данные сборки включают:
> Driver is 'Universal'.
Убедись, что решение успешно создано, можно закрыть Visual Studio.
Чтобы просмотреть встроенный драйвер, в проводник перейдите в папку UmdfDriver, а затем в папку x64\Debug\UmdfDriver. Каталог содержит следующие файлы:
- UmdfDriver.dll — файл драйвера в пользовательском режиме
- UmdfDriver.inf - информационный файл, который Windows использует при установке драйвера.
Развертывание и установка драйвера универсальной версии Windows
Обычно при тестировании и отладке драйвера отладчик и драйвер выполняются на отдельных компьютерах. Компьютер, на котором выполняется отладчик, называется хост-компьютером, а компьютер, на котором запущен драйвер, называется целевым компьютером. Целевой компьютер также называется тестовый компьютер.
До сих пор вы использовали Visual Studio для создания драйвера на хост-компьютере. Теперь необходимо настроить целевой компьютер. Следуйте инструкциям по подготовке компьютера для развертывания и тестирования драйверов (WDK 10). Затем вы будете готовы к развертыванию, установке, загрузке и отладке драйвера:
На хост-компьютере откройте решение в Visual Studio. Вы можете дважды щелкнуть файл решения UmdfDriver.sln в папке UmdfDriver.
В окне Обозреватель решений выберите и удерживайте (или щелкните правой кнопкой мыши) UmdfDriver и выберите "Свойства".
В окне страниц свойств UmdfDriver перейдите в раздел "Установка драйвера > свойств > конфигурации", как показано здесь.
Перед развертыванием проверьте удаление предыдущих версий драйверов.
В качестве имени целевого устройства выберите имя компьютера, настроенного для тестирования и отладки.
Выберите обновление драйвера идентификатора оборудования и введите идентификатор оборудования для драйвера. В этом упражнении идентификатор оборудования — Root\UmdfDriver. Нажмите ОК.
Примечание . В этом упражнении идентификатор оборудования не определяет реальную часть оборудования. Он определяет мнимое устройство, которое будет присвоено место в дереве устройств в качестве дочернего элемента корневого узла. Для реального оборудования не выбирайте обновление драйвера идентификатора оборудования. Вместо этого выберите "Установить и проверить". Идентификатор оборудования можно увидеть в файле сведений о драйвере (INF). В окне Обозреватель решений перейдите к файлам драйверов UmdfDriver и дважды щелкните UmdfDriver.inf>. Идентификатор оборудования находится в разделе [Standard.NT$ARCH$].
[Standard.NT$ARCH$] %DeviceName%=MyDevice_Install,Root\UmdfDriver
В меню отладки выберите "Начать отладку" или нажмите клавишу F5 на клавиатуре.
Подождите, пока драйвер не будет развернут, установлен и загружен на целевом компьютере. Это может занять несколько минут.
Использование платформы модулей драйверов (DMF)
Платформа модулей драйверов (DMF) — это расширение для WDF, которое обеспечивает дополнительные функциональные возможности для разработчика драйвера WDF. Это помогает разработчикам писать любой тип драйвера WDF лучше и быстрее.
DMF в качестве платформы позволяет создавать объекты WDF, называемые модулями DMF. Код для этих модулей DMF можно совместно использовать между различными драйверами. Кроме того, DMF объединяет библиотеку модулей DMF, которые мы разработали для наших драйверов и чувствуем, что обеспечит ценность для других разработчиков драйверов.
DMF не заменяет WDF. DMF — это вторая платформа, используемая с WDF. Разработчик, использующий DMF, по-прежнему использует WDF и все его примитивы для записи драйверов устройств.
Дополнительные сведения см. в разделе Driver Module Framework (DMF).