Архитектура и модули WinUSB
WinUSB состоит из двух основных компонентов:
- Winusb.sys — это драйвер в режиме ядра, который можно установить в качестве фильтра или драйвера функции над драйверами протокола в стеке устройств в режиме ядра USB-устройства.
- Winusb.dll — это библиотека DLL в пользовательском режиме, которая предоставляет функции WinUSB. Приложения могут использовать эти функции для взаимодействия с Winusb.sys при установке в качестве драйвера функции устройства.
Для устройств, для которых не требуется настраиваемый драйвер функции, Winusb.sys можно установить в стеке устройства в режиме ядра в качестве драйвера функции. Затем процессы в пользовательском режиме могут взаимодействовать с Winusb.sys с помощью набора запросов управления вводом-выводом устройства или путем вызова функций WinUSB.
На следующем рисунке показан стек драйверов USB, содержащий несколько экземпляров Winusb.sys.
На предыдущем рисунке показан пример конфигурации WinUSB, реализующей три класса интерфейса устройства, каждый из которых имеет один зарегистрированный интерфейс устройства:
- Экземпляр 1 из Winusb.sys регистрирует интерфейс устройства A, который поддерживает драйвер пользовательского режима (Usboem.dll).
- Экземпляр 2 из Winusb.sys регистрирует интерфейс устройства B, который поддерживает драйвер пользовательского режима для сканера (Usbscan.exe), который взаимодействует с Winusb.dll с помощью системной службы (SVCHOST).
- Экземпляр 3 из Winusb.sys регистрирует интерфейс устройства C, который поддерживает программу обновления встроенного ПО (Usbfw.exe).
Существует ровно один загруженный экземпляр Winusb.sys. PDO может представлять не составное устройство (например, экземпляр 1 на схеме) или интерфейсную коллекцию на составном устройстве (например, экземпляры 2 и 3). Для устройств класса USB wireless mobile communication device (WMCDC) PDO может даже представлять несколько коллекций интерфейсов. (Дополнительные сведения о PDO для устройств WMCDC см. в разделе Поддержка класса устройств беспроводной мобильной связи.)
Любое приложение в пользовательском режиме может взаимодействовать с USB-стеком, загружая библиотеку динамической компоновки WinUSB (Winusb.dll) и вызывая функции WinUSB, предоставляемые этим модулем.
Связанные темы
Установка WinUSB (winusb.sys)
Доступ к USB-устройству с помощью функций WinUSB
Функции WinUSB для изменения политики канала
Управление питанием WinUSB
Функции WinUSB
WinUSB
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по