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


Общие целевые объекты ввода-вывода в UMDF

Предупреждение

UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2.

Архивные примеры UMDF 1 можно найти в Windows 11 версии 22H2 — обновление примеров драйверов за май 2022 г.

Дополнительные сведения см. в разделе начало работы с помощью UMDF.

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

Локальные целевые объекты ввода-вывода
Драйверы часто отправляют запросы ввода-вывода следующему драйверу в стеке драйверов. Таким образом, каждый драйвер на основе UMDF имеет целевой объект ввода-вывода по умолчанию для каждого устройства, который является следующим драйвером ниже устройства. Целевым объектом ввода-вывода по умолчанию для драйвера на основе UMDF самого низкого уровня является отражатель режима ядра.

Иногда драйвер на основе UMDF должен отправлять запросы ввода-вывода целевому объекту ввода-вывода на основе дескриптора, например файлу или сетевому сокету. Поэтому платформа также предоставляет целевые объекты ввода-вывода на основе дескриптора файлов.

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

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

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

В следующих разделах описывается, как инициализировать и использовать общий целевой объект ввода-вывода.