Architecture : extension du contrôleur hôte USB (UCX)

Cette section vous présente des concepts et des tâches de haut niveau pour le développement de pilotes hôtes. La section s’applique à vous si vous écrivez un nouveau pilote de contrôleur d’hôte qui communique avec le pilote d’extension du contrôleur hôte USB fourni par Microsoft (Ucx01000.sys).

Voici une version modifiée d’un diagramme illustré dans les pilotes côté hôte USB dans Windows. Cette version masque les détails de la couche de pilote client USB, qui ne sont pas pertinents pour le développement de pilotes de contrôleur hôte.

architecture ucx.

Dans l’image précédente,

  • Le pilote hub USB (Usbhub3.sys) est un pilote KMDF. Le pilote hub est responsable de la gestion des hubs USB et de leurs ports, de l’énumération et de la création d’objets de périphériques physiques (PDO) de périphériques USB et d’autres hubs qui peuvent être attachés à leurs ports en aval.
  • L’extension du contrôleur hôte USB (Ucx01000.sys) est une couche d’abstraction pour le pilote hub ci-dessus dans la pile et fournit un mécanisme générique pour la mise en file d’attente des demandes adressées au pilote de contrôleur hôte sous-jacent.
  • Le pilote du contrôleur hôte USB gère le matériel. Usbxhci.sys est l’un de ces pilotes fourni par Microsoft, qui cible en particulier le matériel de contrôleur USB conforme aux spécifications xHCI. Il peut être nécessaire pour les développeurs de matériel indépendant d’écrire leur propre pilote de contrôleur hôte, plutôt que d’utiliser la boîte de réception Usbxhci.sys. Par exemple, pour un matériel XHCI qui n’est pas entièrement conforme à la spécification et qui ne peut donc pas utiliser Usbxhci.sys ou pour du matériel non XHCI, comme une connexion USB sur TCP.

La communication bidirectionnelle qui a lieu entre UCX et le pilote du contrôleur hôte s’effectue à l’aide d’interfaces de programmation UCX (Usb Host Controller Extension). Chaque pilote établit un lien statique vers les points d’entrée dans la bibliothèque stub fournie par Microsoft (Ucx01000.lib) lorsque le pilote est compilé.

Voici les piles d’appareils chargées pour le pilote du contrôleur hôte :

pile d’appareils ucx.