Интерфейсы 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)".