Поделиться через


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

В этом разделе описываются преимущества написания драйвера User-Mode Driver Framework (UMDF) вместо драйвера в режиме ядра.

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

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

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

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

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

  • UMDF версии 2 упрощает преобразование между KMDF и UMDF. См. статью Как преобразовать драйвер KMDF в драйвер UMDF 2 (и наоборот).

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

  • Вы можете использовать команды расширения Wdfkd.dll отладчика с KMDF и начиная с UMDF версии 2. Дополнительные сведения см. в разделе Расширения отладчика.

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

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

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

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