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


Архитектура: расширение контроллера узла USB (UCX)

В этом разделе приведены общие понятия и задачи для разработки драйвера узла. Этот раздел относится к вам, если вы пишете новый драйвер хост-контроллера, который взаимодействует с предоставленным корпорацией Майкрософт драйвером расширения USB-контроллера узла (Ucx01000.sys).

Ниже приведена измененная версия схемы, показанной в драйверах на стороне узла USB в Windows. Эта версия скрывает сведения об уровне драйверов USB-клиента, которые не относятся к разработке драйверов контроллера узла.

Архитектура ucx.

На предыдущем рисунке:

  • Драйвер концентратора USB (Usbhub3.sys) — это драйвер KMDF. Драйвер концентратора отвечает за управление USB-концентраторами и их портами, перечисление и создание объектов физических устройств (PDO) USB-устройств и других концентраторов, которые могут быть подключены к подчиненным портам.
  • Расширение USB-контроллера узла (Ucx01000.sys) — это уровень абстракции для драйвера концентратора, приведенного выше в стеке, и предоставляет универсальный механизм для постановки запросов в очередь к базовому драйверу контроллера узла.
  • Драйвер USB-контроллера узла управляет оборудованием. Usbxhci.sys является одним из таких драйверов, предоставляемых корпорацией Майкрософт, который, в частности, предназначен для оборудования usb-контроллера, совместимого со спецификациями xHCI. Независимым разработчикам оборудования может потребоваться написать собственный драйвер хост-контроллера, а не использовать Usbxhci.sys папки "Входящие". Например, для оборудования XHCI, которое не полностью соответствует спецификации и поэтому не может использовать Usbxhci.sys или для аппаратного обеспечения, отличного от XHCI, такого как подключение USB через TCP.

Двунаправленный обмен данными между UCX и драйвером контроллера узла осуществляется с помощью программных интерфейсов расширения USB-контроллера (UCX). Каждый драйвер статически связывается с точками входа в библиотеке заглушки, предоставляемой Корпорацией Майкрософт (Ucx01000.lib), при компиляции драйвера.

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

Стек устройств ucx.