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


Интерфейсы UMDF 1.x для usb

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

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 интерфейсом IWDFUsbTargetPipe .

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

Интерфейсы UMDF для USB имеют иерархию объектов, аналогичную общей модели USB. Драйвер UMDF создает целевой объект устройства, который предоставляется интерфейсом IWDFUsbTargetDevice . Затем драйвер может использовать методы IWDFUsbTargetDevice для доступа к USB-интерфейсам, которые предоставляются экземплярами IWDFUsbInterface. Драйвер может вызывать методы IWDFUsbInterface для управления параметрами и конечными точками.

В следующей таблице показана иерархия интерфейсов UMDF для USB:

Интерфейс UMDF для конкретного USB Производный от
IWDFUsbTargetDevice IWDFIoTarget
IWDFUsbInterface IWDFObject
IWDFUsbTargetPipe IWDFIoTarget

Интерфейсы IWDFUsbTargetDevice и IWDFUsbTargetPipe являются производными от интерфейса IWDFIoTarget и, следовательно, предоставляют целевые объекты ввода-вывода. Интерфейс IWDFUsbInterface не является производным от IWDFIoTarget (IWDFUsbInterface является производным от интерфейса IWDFObject ), поэтому не предоставляет целевой объект ввода-вывода. Все операции ввода-вывода, отправляемые для обнаружения и управления сведениями о интерфейсе, отправляются на целевое устройство.

Пошаговые инструкции по написанию простого USB-драйвера USB-клиента на основе UMDF см. в статье о написании первого usb-драйвера клиента (UMDF).

Дополнительные сведения о исходном коде, необходимом для USB-драйвера USB-клиента на основе UMDF, см. в статье "Общие сведения о структуре кода драйвера USB-клиента (UMDF)".