Umdf что это за драйвер

Преимущества написания драйверов UMDF

В этом разделе описываются преимущества написания каркаса драйверов пользовательского режима (UMDF) вместо драйвера режима ядра.

Вы можете воспользоваться следующие преимущества при написании драйвера UMDF.

Драйверы UMDF способствуют стабильности операционной системы, поскольку они имеют доступ только к адресному пространству процесса, в котором они выполняются.

Поскольку драйверы Od UMDF работают под LocalService , они имеют ограниченный доступ к пользовательским данным или системным файлам.

Драйверы пользовательского режима работают в среде гораздо проще, чем драйверы режима ядра. Например, драйверы режима ядра должны знать об IRQL, ошибках страниц и контексте потока. Однако в пользовательском режиме этих проблем не существует. Драйверы пользовательского режима всегда работают в потоке, отличном от запрашивающего процесса, и всегда могут принимать ошибки страницы.

UMDF версии 2 предлагает функции контроля четности CMDF в большинстве областей. Полное сравнение см. в разделе Сравнение UMDF 2 и CMDF.

UMDF версии 2 упрощает преобразование между CMDF и UMDF. См. Преобразование драйвера CMDF в драйвер UMDF 2 (и наоборот).

Драйверы UMDF можно отлаживать с помощью отладчика пользовательского режима или, начиная с UMDF версии 2, с помощью отладчика режима ядра.

Команды расширения отладчика можно использовать Wdfkd.dll с CMDF и UMDF версии 2 и выше. Дополнительную информацию см. в разделе Расширения отладчика.

Основная цель общей модели WDF — предоставить интеллектуальные конфигурации по умолчанию, чтобы вы могли сосредоточиться на оборудовании устройства и избежать написания кода для выполнения задач, характерных для большинства драйверов. .

Для этого платформа предназначена для работы с водителями на основе «согласия». Когда вы пишете драйвер UMDF, вы обеспечиваете обратные вызовы только для событий, влияющих на устройство. Например, некоторые устройства требуют вмешательства сразу после включения и непосредственно перед выключением. Драйвер для этого устройства может реализовывать функции обратного вызова, которые в данный момент вызывает платформа.

Драйвер содержит код для обработки только тех событий, которые требуют конкретной поддержки взаимодействия между устройствами. Все остальные события могут обрабатываться платформой по умолчанию.

Кроме того, контроллер может настроить очереди запросов ввода-вывода таким образом, чтобы платформа прекращала отправку запросов, когда устройство находится в низком состоянии. после того, как устройство снова заработает. Точно так же, если запрос ввода-вывода возникает, когда устройство находится в состоянии низкого энергопотребления, платформа может автоматически включить устройство.

Источник

Обзор UMDF

В этом разделе представлен обзор среды драйверов пользовательского режима (UMDF) и описано, как драйвер взаимодействует с компонентами системы. Применяется к версиям 1 и 2 UMDF.

Драйверы UMDF абстрагируют аппаратные функции, работают в среде пользовательского режима и имеют доступ к различным службам. Драйверы UMDF работают как часть стека драйверов, управляющего устройством. Драйверы файловой системы, драйверы дисплея (для устройств полного отображения, а не только дисплея устройство) и драйверы печати не могут быть драйверами UMDF.

Драйвер UMDF взаимодействует со следующими системными компонентами:

Процесс узла драйвера

Хост-процесс драйвера загружает предоставленный поставщиком Платформа драйверов UMDF и библиотек DLL обеспечивает среду выполнения для контроллеров пользовательского режима и маршрутизирует сообщения между контроллерами в стеке пользовательского режима. Дополнительные сведения см. в разделе «Хост-процесс UMDF».

Диспетчер драйверов — это служба Windows, которая управляет всеми экземплярами хост-процесса Wudfhost. Диспетчер драйверов запускает и отслеживает информацию о каждом хост-процессе драйвера. Каждый узел является дочерним процессом диспетчера драйверов. В каждой системе есть только один диспетчер драйверов. Диспетчер драйверов запускается во время установки первого устройства UMDF, а затем запускается в системе.

Читайте также:  Blackout мышка как настроить

Reflector — это драйвер режима ядра, который позволяет приложению и хост-процессу драйвера (и множеству устройств пользовательского режима) общаться. Reflector создает отдельный объект устройства для каждого экземпляра устройства и обрабатывает запросы Plug and Play (PnP) и ввод-вывод питания, связанные с каждым экземпляром устройства. Вся связь между приложением и узлом управления происходит через рефлектор. Дополнительную информацию см. в разделе «Архитектура UMDF».

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

Следующая диаграмма показывает, как драйвер хоста, диспетчер драйверов и процессы рефлектора взаимодействуют между пользовательским режимом и режимом ядра.

Источник

Универсальный драйвер Windows (UMDF 2) запись на основе шаблона

В этом разделе описывается, как написать универсальный драйвер для Windows с помощью среды драйверов пользовательского режима (UMDF). 2. Вы начинаете с шаблона Microsoft Visual Studio, а затем развертываете и устанавливаете драйвер на автономном компьютер.

Чтобы начать работу, убедитесь, что у вас установлена ​​последняя версия Microsoft Visual Studio и комплект драйверов Windows (WDK). Ссылки для загрузки см. в разделе «Загрузка комплекта драйверов Windows (WDK)».

Создание и подключение драйвера

При создании нового драйвера KMDF или UMDF необходимо выбрать имя драйвера с 32 символов или меньше. Это ограничение длины определяется в файле wdfglobals.h.

Видео-гайд: Umdf что это за драйвер


Запустите Visual Studio. В меню File выберите New> Проект .

В диалоговом окне «Новый проект » выберите C++ из раскрывающегося списка слева, выберите Windows из среднего раскрывающегося списка и выберите «Драйвер » из правого раскрывающегося списка.

Выберите Драйвер режима пользователя (версия 2 UMDF) из списка типов проектов. Выберите Далее .

В диалоговом окне Настроить новый проект введите «UmdfDriver» в поле имени Проект .

При создании нового драйвера KMDF или UMDF необходимо выбрать имя драйвера длиной не более 32 символов. Этот предел длины определено в wdfglobals.h.

В поле «Расположение » введите каталог, в котором вы хотите создать проект.

Отметьте » Найдите решение и project» в том же каталоге и нажмите «Создать «.

Visual Studio создаст проект и решение. Вы можете увидеть их в обозревателе решений . (Если окно Solution Explorer не открывается, выберите Solution Explorer в меню View .) Решение содержит проект драйвера с именем UmdfDriver. Чтобы просмотреть исходный код драйвера, откройте любой из файлов в папке Исходные файлы . Driver.c и Device.c — хорошие места для начала.

В обозревателе решений выберите и удерживайте (или щелкните правой кнопкой мыши) UmdfDriver решение (1 из 1 проекта) и выберите Configuration Manager . Выберите конфигурацию и платформу для проекта драйвера. Например, выберите «Отладка » и «X64 ».

В Solution Explorer выберите и удерживайте (или щелкните правой кнопкой мыши) UmdfDriver и выберите Свойства . Перейдите в раздел конфигурации Свойства > Настройки > «Универсальный» и обратите внимание, что целевая платформа по умолчанию универсальная.

Чтобы скомпилировать контроллер, выберите » Build Solution » в меню «Build «. Microsoft Visual Studio отображает ход сборки в окне Output . (Если окно Вывод не появляется, выберите «Вывод » в меню «Вид ».)

Убедитесь, что выходные данные сборки включает:

Убедившись, что решение было успешно построено, вы можете закрыть Visual Studio.

Чтобы просмотреть встроенный драйвер, перейдите к UmdfDriver в Проводнике. и перейдите к x64\Debug\UmdfDriver . Каталог содержит следующие файлы:

  • UmdfDriver.dll — файл драйвера пользовательского режима
  • UmdfDriver.inf — это информационный файл, который Windows использует при установке драйвера.
Читайте также:  Linux как узнать какие драйвера используются

Развертывание и установка универсального драйвера Windows

При тестировании и отладке драйвера отладчик и драйвер обычно работают на разных компьютерах. Компьютер, на котором работает отладчик, называется главным компьютером , а компьютер с контроллером называется целевым компьютером . Целевой компьютер также называется тестовым компьютером .

До сих пор вы использовали Visual Studio для создания контроллера на хост-компьютере. Теперь вам нужно настроить целевой компьютер. Следуйте инструкциям в разделе Подготовка компьютера к развертыванию и тестированию драйверов (WDK 10). Теперь вы готовы к развертыванию, установке, загрузке и отладке драйвера:

На хост-компьютере откройте решение в Visual Studio. Дважды щелкните файл решения UmdfDriver.sln в папке UmdfDriver.

В Solution Explorer выберите и удерживайте (или щелкните правой кнопкой мыши) UmdfDriver и выберите Свойства .

В окне Страницы свойств UmdfDriver перейдите в раздел «Установка драйвера»> Конфигурация Свойства», как показано ниже.

Перед развертыванием установите флажок «Удалить предыдущие версии драйвера ».

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

Выберите «Обновить идентификатор оборудования драйвера » и введите идентификатор оборудования драйвера. В этом упражнении ID оборудования — Root\UmdfDriver. Нажмите OK ​​​​​.

Примечание В этом упражнении идентификатор оборудования не идентифицирует фактическую деталь. оборудования. Определяет воображаемое устройство, которому будет назначено место в дереве устройств в качестве дочернего элемента корневого узла. Для реального оборудования не выбирайте Hardware ID Driver Update ; вместо этого выберите «Установить и протестировать ». Идентификацию оборудования можно увидеть в файле информации о драйвере (INF). В Solution Explorer перейдите к UmdfDriver > файлов драйверов и дважды щелкните файл UmdfDriver.inf. Идентификатор оборудования находится в папке [Standard.NT$ARCH$].

В меню «Отладка » выберите «Начать отладку » или нажмите кнопку Клавиша F5 на клавиатуре.

Подождите, пока драйвер установится, установится и загрузится на целевой компьютер. Это может занять несколько минут.

Использование каркаса модулей драйверов (DMF)

Платформа модулей драйверов (DMF) — это расширение WDF, предоставляющее дополнительные функции разработчикам драйверов WDF. Это помогает разработчикам писать драйверы WDF любого типа лучше и быстрее.

DMF как платформа позволяет создавать объекты WDF, называемые модулями DMF. Код для этих DMF может совместно использоваться различными драйверами. Кроме того, в DMF интегрирована библиотека модулей DMF, разработанных для наших драйверов, и мы считаем, что они представляют ценность для других разработчиков драйверов.

DMF не является заменой WDF. DMF — вторая платформа, используемая с WDF. Разработчик, использующий DMF, по-прежнему использует WDF и все его примитивы для написания драйверов устройств.

Дополнительную информацию см. в разделе Структура модуля драйвера (DMF).

Источник

Использование средства проверки UMDF

Платформа предоставляет встроенные функции тестирования, которые можно использовать для тестирования работающего драйвера платформы драйверов пользовательского режима (UMDF). Эта функция, иногда называемая средством проверки UMDF, тщательно проверяет состояние контроллера и аргументы, которые контроллер передает методам объекта платформы. Вы можете использовать UMDF Verifier отдельно или в сочетании с General Purpose Application Verifier (AppVerif.exe).

UMDF Verifier проверяет блокировку и иерархию, проверяет операции ввода-вывода и очереди, а также обеспечивает соответствие драйвера и платформы документированные контракты .

Проверка UMDF вызывает ошибки в коде драйвера проверки ошибок UMDF хоста процесса . Однако проверка ошибок UMDF не создает синий текстовый экран с подробной информацией об ошибке. Вместо этого он проверяет наличие ошибки UMDF:

Создает файл дампа памяти и сохраняет его в каталоге файлов журнала устройства (например, %windir%\System32\LogFiles\WUDF\ ххх . dmp).

Примечание . Начиная с каталога журнала UMDF 2.15 %ProgramData% \Microsoft\wdf.

Читайте также:  Brother hl 2130r как установить драйвер

Создать отчет об ошибке Microsoft (согласие).

Передача в отладчик да подключен к компьютеру .

Завершает хост-процесс и отключает устройство.

Начиная с UMDF 2.0, средство проверки UMDF в некоторых случаях вызывает точки останова, а в других — проверку ошибок UMDF. Это поведение похоже на CMDF Verifier.

Мы настоятельно рекомендуем выполнить все этапы тестирования и разработки драйверов после включения Application Verifier (AppVerif.exe) в WUDFHost.exe. Используйте следующую команду, подключите отладчик и перезагрузитесь.

Начиная с UMDF 2.0, когда вы запускаете Application Verifier в хост-процессе контроллера (WoodFhost), UMDF Verifier автоматически включается для всех контроллеров UMDF 2.0 на этом хосте. а также для всех будущих контроллеров UMDF 2.0. Хост-процессы контроллера.

В UMDF 1.11 и более ранних версиях проверка инфраструктуры всегда включена и не может быть отключена.

Включить/отключить проверку UMDF

Вы можете вручную включить средство проверки UMDF установив ненулевые значения в подразделе Parameters\WUDF драйверы HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\ ключ реестра WUDF\Services \ .

Примечание . Наличие Verifier , даже если установлено значение null, нарушит компиляцию верификатора приложения. В результате рекомендуется удалить это значение, если вы не навязываете его принудительно, вместо того, чтобы устанавливать его равным нулю.

Чтобы проверить, включена ли проверка UMDF, установите точку останова в месте после вызова драйвера UMDF. wdfDriverCreate и используйте команду . Отладчик wdfDriverInfo Расширение.

! vdfcd. vdfDriverInfo <> **** , 0x1

Дополнительные сведения о командах расширения отладчика см. в разделе Расширения отладчика для платформенных драйверов.

Управление поведением проверки

Поведением средства проверки UMDF можно управлять, изменяя значения в реестре. Вы также можете использовать управляющее приложение WDF Verifier для установки этих значений.

Следующие значения реестра можно использовать с драйверами UMDF 1. x и драйверами UMDF 2.0 и более поздних версий.

VerifiedNLevel ( REG_DWORD )
Если для VerifiedNLevel задано ненулевое значение и если драйвер был построен на более ранней версии платформа По сравнению с текущей версией проверка платформы содержит тесты, добавленные после сборки драйвера. Если это значение не существует или равно 0, проверка платформы включает только те тесты, которые существовали на момент создания контроллера.

Например, если контроллер был создан с использованием версии платформы 1.7 и версии платформы 1.9. установлен на компьютере, настройка VerifiedNLevel на значение приводит к тому, что проверка включает проверки, добавленные к проверке запуска драйвера версии 1.9.

Это значение находится в параметрах \WUDF подраздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\ имя_драйвера ключ.

Trackobjects ( REG_DWORD )
Да Trackobjects имеет ненулевое значение, фреймворк войдет в отладчик при выпуске драйвера, если какой-либо из объектов на платформе был слит (не удален).

Во время регулярного тестирования должен быть включен TruckCojects , а не TrackRefCounts . Если верификатор сообщает, что драйвер пропускает объекты платформы, используйте управляющее приложение для включения параметра TrackRefCounts Verifier.

. Это значение находится в подразделе DefaultSostProcessGuid раздела реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services , где DefaultSoftProcessGuid — это значение. который можно найти в HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\Windows NT\CurrentVersion\WUDF .

TruckRefCounts ( REG_DWORD )
When TruckRefCounts установлен в ненулевое значение, платформа поддерживает счетчик ссылок для каждого объекта в зависимости от платформы. Вы можете использовать ! свежее дерево .

Установка ненулевого значения TrackRefCounts снижает производительность драйвера, поэтому, если вы не отлаживаете ошибку удаления объекта, оставьте значение равным нулю.

Это значение находится в подразделе DefaultStatusProcessGuid , раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services , где DefaultStatusProcessGuid — это найденное значение. в подразделе > HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF .

В дополнение к значениям реестра, перечисленным выше, драйверы UMDF 2.0 и более поздних версий также могут использовать ряд значения реестра, перечисленные в разделе Использование средства проверки CMDF.

Источник

Поделиться с друзьями
ГроФорум