Partager via


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 pilotes client USB, qui ne sont pas pertinentes pour le développement de pilotes du contrôleur hôte.

architecture UCX.

Dans l'image précédente,

  • Le pilote de hub USB (Usbhub3.sys) est un pilote KMDF. Le pilote de hub est responsable de la gestion des hubs USB et de leurs ports, de leur énumération et de la création d’objets de périphérique physique (PDO) d’appareils 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 vers 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 au pilote du contrôleur hôte sous-jacent.
  • Le pilote du contrôleur hôte USB gère le matériel. Usbxhci.sys est un pilote de ce type fourni par Microsoft, qui cible le matériel de contrôleur USB conforme aux spécifications xHCI, en particulier. Il peut être nécessaire que les développeurs de matériel indépendants écrivent leur propre pilote de contrôleur d’hôte, au lieu 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 ne peut donc pas utiliser Usbxhci.sys ou pour du matériel non XHCI, tel que usb via une connexion TCP.

La communication bidirectionnelle qui a lieu entre UCX et le pilote du contrôleur hôte se fait en utilisant les interfaces de programmation de l’extension de contrôleur hôte USB (UCX). Chaque pilote lie statiquement 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 de dispositifs UCX.