Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается поддержка в операционной системе Windows для разработки драйвера контроллера узла универсальной последовательной шины (USB), который взаимодействует с расширением контроллера USB-узла (UCX) корпорации Майкрософт.
Если вы разрабатываете контроллер узла xHCI, который не соответствует спецификации или разрабатывает пользовательское оборудование, отличное от xHCI (например, виртуального контроллера узла), можно написать драйвер контроллера узла, который взаимодействует с UCX. Например, рассмотрим беспроводные док-станции, поддерживающие USB-устройства. Компьютер взаимодействует с USB-устройствами через беспроводной док-станцию, используя USB поверх TCP как транспорт.
Расширение контроллера USB-узла (UCX)
Расширение контроллера USB-узла — это системный драйвер (Ucx01000.sys). Этот драйвер реализуется как расширение класса платформы с помощью интерфейсов программирования Windows Driver Framework. Драйвер контроллера узла служит драйвером клиента для этого расширения класса. Хотя драйвер хост-контроллера обрабатывает аппаратные операции и события, управление питанием и события PnP, UCX служит абстрактным интерфейсом, который ставит в очередь запросы к драйверу хост-контроллера и выполняет другие задачи.
UCX — это один из драйверов для работы на стороне USB-хоста в Windows. Он загружается как FDO в стеке устройств контроллера хоста.
Драйвер контроллера USB-узла
UCX является расширяемым и предназначен для поддержки различных драйверов контроллера узла. Windows предоставляет драйвер xHCI (Usbxhci.sys), предназначенный для контроллеров узлов USB xHCI.
Драйвер контроллера узла — это клиент UCX, написанный как драйвер Kernel-Mode Driver Framework (KMDF).
Двоичные файлы, предоставляемые Microsoft
Чтобы написать драйвер контроллера хоста, вам потребуется UCX (Ucx01000.sys) и библиотека заглушек (Ucx01000.lib). Библиотека заглушки находится в комплекте драйверов Windows (WDK). Библиотека выполняет две основные функции.
- Перевод вызовов, выполняемых драйвером хост-контроллера, и их передача в UCX.
- Предоставляет поддержку управления версиями. Драйвер контроллера узла будет работать с UCX только в том случае, если Основная версия UCX совпадает с основной версией драйвера контроллера узла, а Младшая версия UCX совпадает или превосходит младшую версию драйвера контроллера узла.
Средства разработки
WDK содержит ресурсы, необходимые для разработки драйверов, например заголовки, библиотеки, инструменты и примеры.
Скачать комплекты и средства для Windows
Начало работы
Прочитайте официальную спецификацию, описывающую ожидаемое поведение различных компонентов (устройства, контроллера узла и концентратора) архитектуры.
xHCI для универсальной последовательной шины: спецификация
официальные документы для интерфейса USB
Общие сведения об архитектуре UCX
Ознакомьтесь с стеком USB-драйверов, предоставляемым Корпорацией Майкрософт:
архитектура : расширение хост-контроллера USB (UCX)
Ознакомьтесь с объектами и дескрипторами UCX
UCX расширяет функциональные возможности объектов WDF, чтобы определить собственные объекты UCX для USB. Дополнительные сведения о объектах WDF см. в разделе Введение в объекты Платформы.
Для постановки в очередь запросов к любому базовому драйверу контроллера хоста UCX использует эти объекты. Для получения дополнительных сведений см. объекты UCX и дескрипторы, используемые драйвером контроллера узла, .
| Объект UCX | Описание |
|---|---|
| Объект контроллера узла (UCXCONTROLLER) | Представляет контроллер узла, созданный драйвером контроллера узла. Драйвер должен создать только один объект контроллера хоста для каждого экземпляра контроллера хоста. Обычно создается в обратном вызове EVT_WDF_DRIVER_DEVICE_ADD путем вызова метода UcxControllerCreate. |
| Корневой объект хаба (UCXROOTHUB) | Получает и управляет состоянием корневых портов контроллера хоста. Создается драйвером хост-контроллера, обычно в обратном вызове EVT_WDF_DRIVER_DEVICE_ADD путем вызова метода UcxRootHubCreate. |
| ОБЪЕКТ USB-устройства (UCXUSBDEVICE) | Представляет физическое USB-устройство, подключенное к шине. Создается драйвером контроллера хоста, как правило, в EVT_UCX_CONTROLLER_USBDEVICE_ADD обратном вызове через вызов метода **UcxUsbDeviceCreate. |
| Объект конечной точки (UCXENDPOINT) | Представляет конечную точку объекта USB-устройства. Создается драйвером контроллера узла, как правило, в EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD или обратном вызове EVT_UCX_USBDEVICE_ENDPOINT_ADD путем вызова метода **UcxEndpointCreate. |
| Объект Stream (UCXSTREAMS) | Представляет ряд каналов на устройство через одну массовую конечную точку. Создается драйвером контроллера узла, обычно в колбэке EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD через вызов метода UcxStaticStreamsCreate. |
Разделы документации
функции обратного вызова корневого концентратора для драйвера контроллера хоста
UCX обрабатывает большинство операций, связанных с корневым концентратором. Это позволяет драйверу USB-концентратора взаимодействовать с корневым концентратором таким же образом, как он взаимодействует с обычным концентратором. Драйвер контроллера хоста может зарегистрировать функции своих обратных вызовов.
обрабатывать запросы ввода-вывода в драйвере контроллера USB-узла
UCX сортирует входящие блоки USB-запросов (URB), а затем перенаправляет их в правильную очередь конечных точек.
Настройка конечных точек USB в драйвере контроллера узла
Драйвер контроллера узла играет роль в управлении UCX очередей передачи данных, связанных с конечными точками, и в программировании конечных точек в аппаратное обеспечение контроллера.
справочник по расширению контроллера usb-узла (UCX)
Предоставляет спецификации для запросов ввода-вывода, подпрограмм поддержки, структур и интерфейсов, используемых драйвером клиента. Эти подпрограммы и связанные структуры данных определяются в заголовках WDK.
UCX называется расширением класса платформы.
Драйвер контроллера узла считается клиентским драйвером .