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


Архитектура эмуляции USB-устройства

В этой статье описывается архитектура эмуляции USB-устройства (UDE), которая эмулирует поведение контроллера USB-узла и подключенного устройства. С помощью UDE оборудование, отличное от USB, может взаимодействовать с верхними слоями с помощью драйверов на стороне USB в Windows.

Драйверы UDE

Схема стека программного обеспечения UDE.

На предыдущем изображении

  • Драйвер USB-концентратора (Usbhub3.sys) — это драйвер платформы драйверов в режиме ядра (KMDF). Драйвер концентратора отвечает за управление USB-концентраторами и их портами, перечислением и созданием объектов физических устройств (PDOS) USB-устройств и других концентраторов, которые могут быть подключены к их подчиненным портам.
  • Расширение контроллера USB (Ucx01000.sys) — это слой абстракции для драйвера концентратора в стеке и предоставляет универсальный механизм для очередей запросов к базовому драйверу контроллера узла.
  • Расширение класса UDE (UdeCx) вызывается в драйвер клиента UDE с помощью функций обратного вызова, реализованных клиентом. Расширение класса предоставляет подпрограммы для драйвера клиента для создания объектов UDE и управления ими.
  • Драйвер клиента UDE управляет оборудованием, взаимодействуя с платформой драйверов Windows (WDF) и API UDE. Верхний край взаимодействует с расширением класса WDF и UDE с помощью конструкций USB. Его нижний край взаимодействует с оборудованием с помощью интерфейса оборудования.
  • Настраиваемое оборудование: например, оборудование PCI можно эмулировать для работы в качестве USB-устройства.

Узлы устройства UDE

Ниже приведены стеки устройств, загруженные для драйвера клиента UDE:

Схема стеков устройств UDE.