Architecture et modules WinUSB

WinUSB se compose de deux composants principaux :

  • Winusb.sys est un pilote en mode noyau qui peut être installé en tant que pilote de filtre ou de fonction, au-dessus des pilotes de protocole dans la pile de périphériques en mode noyau d’un périphérique USB.
  • Winusb.dll est une DLL en mode utilisateur qui expose les fonctions WinUSB. Les applications peuvent utiliser ces fonctions pour communiquer avec Winusb.sys lorsqu’il est installé en tant que pilote de fonction d’appareil.

Pour les appareils qui ne nécessitent pas de pilote de fonction personnalisé, Winusb.sys peut être installé dans la pile en mode noyau de l’appareil en tant que pilote de fonction. Les processus en mode utilisateur peuvent ensuite communiquer avec Winusb.sys à l’aide d’un ensemble de demandes de contrôle d’E/S d’appareil ou en appelant des fonctions WinUSB.

L’illustration suivante montre une pile de pilotes USB qui contient plusieurs instances de Winusb.sys.

pilote winusb et pile d’objets de périphérique.

La figure précédente montre un exemple de configuration WinUSB qui implémente trois classes d’interface d’appareil, chacune ayant une seule interface d’appareil inscrite :

  • L’instance 1 de Winusb.sys inscrit l’interface de périphérique A, qui prend en charge un pilote en mode utilisateur (Usboem.dll).
  • L’instance 2 de Winusb.sys inscrit l’interface de périphérique B, qui prend en charge un pilote en mode utilisateur pour un scanneur (Usbscan.exe) qui communique avec Winusb.dll à l’aide d’un service système (SVCHOST).
  • L’instance 3 de Winusb.sys inscrit Device Interface C, qui prend en charge un utilitaire de mise à jour du microprogramme (Usbfw.exe).

Il existe exactement une instance chargée de Winusb.sys. Un PDO peut représenter un appareil non composite (par exemple, l’instance 1 du diagramme) ou représenter une interface ou une collection d’interfaces sur un appareil composite (par exemple, les instances 2 et 3). Pour les appareils WMCDC (Mobile Communication Device Class) sans fil USB, un PDO peut même représenter plusieurs collections d’interface. (Pour plus d’informations sur les PDO pour les appareils WMCDC, consultez Prise en charge de la classe d’appareils de communication mobile sans fil.)

Toute application en mode utilisateur peut communiquer avec la pile USB en chargeant la bibliothèque de liens dynamiques WinUSB (Winusb.dll) et en appelant les fonctions WinUSB exposées par ce module.

WinUSB (winusb.sys) Installation
Comment accéder à un périphérique USB à l’aide de fonctions WinUSB
Fonctions WinUSB pour la modification de la stratégie de canal
Gestion de l’alimentation WinUSB
Fonctions WinUSB
WinUSB