Udostępnij przez


Architektura i moduły winUSB

WinUSB składa się z dwóch podstawowych składników:

  • Winusb.sys to sterownik trybu jądra, który można zainstalować jako sterownik filtru lub sterownik funkcji, w stosie urządzenia USB działającym w trybie jądra, nad sterownikami protokołu.
  • Winusb.dll to biblioteka DLL trybu użytkownika, która uwidacznia funkcje WinUSB. Aplikacje mogą używać tych funkcji do komunikowania się z Winusb.sys po zainstalowaniu go jako sterownika funkcji urządzenia.

W przypadku urządzeń, które nie wymagają niestandardowego sterownika funkcji, Winusb.sys można zainstalować w stosie trybu jądra urządzenia jako sterownik funkcjonalny. Procesy trybu użytkownika mogą następnie komunikować się z Winusb.sys przy użyciu zestawu żądań sterowania we/wy urządzenia lub wywołując funkcje WinUSB.

Na poniższej ilustracji przedstawiono stos sterowników USB zawierający kilka wystąpień Winusb.sys.

Diagram przedstawiający stos sterowników WinUSB i obiektów urządzeń podzielonych przez tryby użytkownika i jądra.

Na powyższej ilustracji przedstawiono przykładową konfigurację winUSB, która implementuje trzy klasy interfejsów urządzeń, z których każdy ma jeden zarejestrowany interfejs urządzenia:

  • Wystąpienie 1 Winusb.sys rejestruje interfejs urządzenia A, który obsługuje sterownik trybu użytkownika (Usboem.dll).
  • Wystąpienie 2 Winusb.sys rejestruje interfejs urządzenia B, który obsługuje sterownik trybu użytkownika dla skanera (Usbscan.exe), który komunikuje się z Winusb.dll przy użyciu usługi systemowej (SVCHOST).
  • Wystąpienie 3 Winusb.sys rejestruje interfejs urządzenia C, który obsługuje narzędzie aktualizacji oprogramowania układowego (Usbfw.exe).

Istnieje dokładnie jedno załadowane wystąpienie Winusb.sys. Obiekt urządzenia fizycznego (PDO) może reprezentować urządzenie niezgodne (wystąpienie 1 na diagramie) lub może reprezentować interfejs lub kolekcję interfejsu na urządzeniu złożonym (wystąpienia 2 i 3). W przypadku urządzeń klasy bezprzewodowej komunikacji mobilnej USB (WMCDC), PDO może nawet reprezentować kilka kolekcji interfejsów. (Aby uzyskać więcej informacji na temat obiektów PDO (Physical Device Objects) dla urządzeń WMCDC, zobacz Obsługa klasy urządzeń bezprzewodowej komunikacji mobilnej).

Każda aplikacja w trybie użytkownika może komunikować się ze stosem USB, ładując bibliotekę linków dynamicznych WinUSB (Winusb.dll) i wywołując funkcje WinUSB uwidocznione przez ten moduł.