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


Архитектура и модули WinUSB

WinUSB состоит из двух основных компонентов:

  • Winusb.sys — это драйвер в режиме ядра, который можно установить в качестве фильтра или драйвера функции над драйверами протокола в стеке устройств в режиме ядра USB-устройства.
  • Winusb.dll — это библиотека DLL в пользовательском режиме, которая предоставляет функции WinUSB. Приложения могут использовать эти функции для взаимодействия с Winusb.sys при установке в качестве драйвера функции устройства.

Для устройств, для которых не требуется настраиваемый драйвер функции, Winusb.sys можно установить в стеке устройства в режиме ядра в качестве драйвера функции. Затем процессы в пользовательском режиме могут взаимодействовать с Winusb.sys с помощью набора запросов управления вводом-выводом устройства или путем вызова функций WinUSB.

На следующем рисунке показан стек драйверов USB, содержащий несколько экземпляров Winusb.sys.

Драйвер winusb и стек объектов устройства.

На предыдущем рисунке показан пример конфигурации 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