Fonctions de rappel du hub racine d’un pilote de contrôleur hôte USB

UCX effectue la gestion du hub racine. Il simule et gère les points de terminaison de contrôle et d’interruption virtuels. UCX crée ces points de terminaison virtuels lorsque le pilote du contrôleur hôte crée l’objet hub racine.

Le pilote de hub USB interagit avec le hub racine de la même façon qu’il interagit avec un périphérique hub standard. Toutefois, le pilote du contrôleur hôte n’a pas besoin de gérer directement les demandes envoyées au hub racine pour les points de terminaison de contrôle et d’interruption. UCX gère ces demandes. UCX appelle des fonctions de rappel implémentées par le pilote du contrôleur hôte afin qu’il puisse retourner des informations pertinentes sur l’état actuel des ports du contrôleur hôte. Une fois ces fonctions de rappel terminées, les requêtes UCX sous-jacentes sont terminées et retournées au pilote hub.

Lors de la réception d’un transfert d’interruption pour le hub racine, UCX définit la requête comme étant en attente. Lorsqu’une modification est détectée sur l’un des ports du hub racine, le pilote du contrôleur hôte appelle UcxRootHubPortChanged. UCX appelle ensuite le rappel EVT_UCX_ROOTHUB_INTERRUPT_TX du pilote, et le pilote indique que le port qui a été modifié. À ce stade, UCX termine la demande en attente au pilote hub. Le pilote hub envoie un transfert de contrôle au hub racine pour obtenir le port status du port qui a signalé une modification. UCX définit la demande de transfert sur en attente et appelle la fonction de rappel EVT_UCX_ROOTHUB_CONTROL_URB du pilote. Dans l’implémentation retourne la status actuelle du port hub racine, y compris l’indication qu’un appareil est connecté. UCX termine la demande de transfert de contrôle vers le pilote hub, et l’énumération de l’appareil continue.