Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
UCX étend la fonctionnalité d’objet WDF pour définir ses propres objets UCX spécifiques à USB. UCX utilise ces objets pour mettre en file d’attente les demandes à n’importe quel pilote de contrôleur hôte sous-jacent.
Résumé
- Les objets UCX sont utilisés par le pilote du contrôleur hôte pour gérer les opérations liées au contrôleur, à son hub racine et à tous les points de terminaison.
- Les objets UCX sont créés par le pilote du contrôleur hôte et la durée de vie de chaque objet est gérée par UCX.
API importantes
UCX étend la fonctionnalité d’objet WDF pour définir ses propres objets UCX spécifiques à USB. UCX utilise ces objets pour mettre en file d’attente les demandes à n’importe quel pilote de contrôleur hôte sous-jacent.
Pour plus d’informations sur les objets WDF, consultez Présentation des objets Framework.
UCXCONTROLLER : objet contrôleur d’hôte
Représente le contrôleur hôte créé par le pilote du contrôleur hôte. Le pilote ne doit créer qu’un seul objet de contrôleur hôte par instance de contrôleur hôte. Généralement créé dans le rappel EvtDriverDeviceAdd en appelant la méthode UcxControllerCreate .
Lorsque le pilote du contrôleur hôte crée l’objet, le pilote inscrit son implémentation de fonctions de rappel appelées par UCX. Le pilote doit également identifier le type de bus sur lequel le contrôleur hôte est connecté, tel que ACPI ou PCI. Le pilote fournit également des informations sur le périphérique du contrôleur d’hôte à l’aide de la structure UCX_CONTROLLER_CONFIG passée à l’appel UcxControllerCreate .
Pour gérer les requêtes d’E/S, le pilote du contrôleur hôte doit inscrire une interface d’appareil GUID_DEVINTERFACE_USB_HOST_CONTROLLER. Le pilote n’est pas nécessaire pour implémenter les IOCTL définis dans cette interface. Au lieu de cela, le client UCX transmet les demandes IOCTL reçues sur cette interface à UCX en appelant UcxIoDeviceControl.
Voici les fonctions de rappel associées à l’objet du contrôleur hôte, qui sont appelées par UCX. Ces fonctions doivent être implémentées par le pilote du contrôleur hôte.
*
EVT_UCX_CONTROLLER_USBDEVICE_ADD
Appelé lorsque le pilote du hub a déterminé, via l’interaction avec le hub racine et/ou les hubs externes, qu’un nouvel appareil est présent sur le bus.
*
EVT_UCX_CONTROLLER_QUERY_USB_CAPABILITY Appelé par UCX pour collecter des informations sur différentes fonctionnalités prises en charge par les contrôleurs hôtes USB.
*
EVT_UCX_CONTROLLER_RESET Appelé par UCX pour réinitialiser le matériel du contrôleur, éventuellement en réponse à une erreur détectée.
*
EVT_UCX_CONTROLLER_GET_CURRENT_FRAMENUMBER Est utilisé pour récupérer le numéro d’image actuel à partir du contrôleur hôte, utilisé par le pilote hub pour la planification des transferts isochrones.
UCXROOTHUB : Objet root hub
Obtient et contrôle l’état des ports racines du contrôleur hôte. Créé par le pilote du contrôleur hôte généralement dans le rappel EvtDriverDeviceAdd en appelant la méthode UcxRootHubCreate après la création de l’objet du contrôleur hôte. Il ne doit y avoir qu’un seul objet hub racine par instance de contrôleur hôte. Dans l’appel UcxRootHubCreate, le pilote enregistre ses implémentations de callback.
EVT_UCX_ROOTHUB_GET_INFO Retourne le nombre de ports USB 2.0 et USB 3.0 du hub racine.
EVT_UCX_ROOTHUB_GET_20PORT_INFO
Fournit des informations sur les ports USB 2.0 ou USB 3.0 (*EVT_UCX_ROOTHUB_GET_30PORT_INFO) du hub racine.
Une fois l’objet hub racine créé et initialisé, le pilote hub interagit avec les ports du hub racine en envoyant des interruptions et des transferts de contrôle. UCX aide ces transferts en appelant ces fonctions de rappel implémentées par le pilote du contrôleur hôte.
EVT_UCX_ROOTHUB_CONTROL_URB
Gère les demandes de contrôle des fonctionnalités par le hub USB.
EVT_UCX_ROOTHUB_INTERRUPT_TX gère la demande d'informations sur les ports modifiés.
Pour plus d’informations, consultez les fonctions de rappel du hub racine d’un pilote de contrôleur hôte.
UCXUSBDEVICE : objet périphérique USB
Représente un périphérique USB physique connecté au bus. Créée par le pilote du contrôleur hôte généralement dans le rappel EVT_UCX_CONTROLLER_USBDEVICE_ADD en appelant la méthode UcxUsbDeviceCreate.
Lorsque l’objet est créé, le pilote du contrôleur hôte inscrit son implémentation des fonctions de rappel avec l’appel UcxUsbDeviceCreate .
Ces fonctions de rappel sont destinées à maintenir le contrôleur et le pilote informés de l’état actuel des périphériques USB.
EVT_UCX_USBDEVICE_ENABLE
Prépare le contrôleur pour effectuer des transferts vers le point de terminaison par défaut du dispositif.
EVT_UCX_USBDEVICE_DISABLE
Libère les ressources du contrôleur associées à l’appareil et à son point de terminaison par défaut.
EVT_UCX_USBDEVICE_ADDRESS Programme une adresse dans le contrôleur et envoie un transfert SET_ADDRESS à l’appareil pour l’amener à l’état adressé.
EVT_UCX_USBDEVICE_ENDPOINTS_CONFIGURE Programme les points de terminaison non par défaut dans le contrôleur et/ou libère d’autres points de terminaison non par défaut.
EVT_UCX_USBDEVICE_RESET Notification du contrôleur indiquant qu’un appareil a été réinitialisé, auquel cas le pilote effectue toute action nécessaire pour synchroniser le contrôleur avec le périphérique USB.
EVT_UCX_USBDEVICE_UPDATE
Avertit le contrôleur de diverses informations concernant l'appareil.
EVT_UCX_USBDEVICE_HUB_INFO Notification concernant les propriétés du hub, si le handle UCXUSBDEVICE est destiné à un appareil hub.
EVT_UCX_USBDEVICE_ENDPOINT_ADD
Avertit le pilote de créer un point de terminaison pour le dispositif.
EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD pour le point de terminaison par défaut.
Lorsqu’une interface sur un périphérique USB 3.0 suspendu a signalé un réveil, le pilote est censé appeler UcxUsbDeviceRemoteWakeNotification pour notifier UCX.
Une fois l’objet créé, la durée de vie de l’objet est gérée par UCX et le pilote ne doit pas supprimer l’objet.
UCXENDPOINT : Objet Point de terminaison
Représente un point de terminaison sur un objet périphérique USB. Les objets de point de terminaison sont créés par le contrôleur hôte lors d'un rappel de EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD ou de EVT_UCX_USBDEVICE_ENDPOINT_ADD. Lorsqu’un objet de point de terminaison est créé, le pilote enregistre ses fonctions de rappel.
Le pilote crée également un objet de file d'attente du framework pour chaque point de terminaison et passe l'objet WDFQUEUE pour cette file d'attente à UCX en appelant UcxEndpointSetWdfIoQueue. Une fois le point de terminaison créé, la durée de vie de l’objet et ses files d’attente associées sont gérées par UCX, et le pilote ne doit pas supprimer ces objets lui-même.
L’objet de point de terminaison implémente plusieurs fonctions de rappel qui permettent au pilote d’aider UCX à effectuer des opérations liées au point de terminaison.
EVT_UCX_ENDPOINT_ABORT
Abandon de la file d’attente associée au point de terminaison.
EVT_UCX_ENDPOINT_OK_TO_CANCEL_TRANSFERS Informez le pilote du contrôleur qu’il peut terminer les transferts annulés sur le point de terminaison.
EVT_UCX_ENDPOINT_PURGE
Terminez toutes les demandes d’E/S en attente sur le point de terminaison.
EVT_UCX_ENDPOINT_START
Lancez la file d'attente associée au point de terminaison.
EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD
Créer des flux statiques.
EVT_UCX_ENDPOINT_RESET
Veuillez informer le pilote de réinitialiser la programmation du contrôleur de l'endpoint.
Lorsque le pilote du contrôleur hôte reçoit une erreur de non-réponse au ping USB 3.0 sur un point de terminaison, le pilote doit appeler UcxEndpointNoPingResponseError. Cet appel entraîne la réception d’EVT_UCX_USBDEVICE_UPDATE par l’objet périphérique USB. Pour plus d’informations, consultez Configuration des points de terminaison USB dans un pilote de contrôleur hôte.
UCXSTREAMS : Objet Stream
Représente un certain nombre de canaux vers l’appareil sur un point de terminaison unique. Le pilote du contrôleur hôte crée des objets de flux dans le rappel EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD en appelant UcxStaticStreamsCreate.
Pendant l'appel UcxStaticStreamsCreate, le pilote du contrôleur hôte enregistre ses fonctions de rappel. Pour un objet de point de terminaison spécifique, le pilote peut déterminer s’il a créé un objet de flux et retourner le handle UCXSTREAMS en appelant UcxEndpointGetStaticStreamsReferenced.
Une fois l’objet créé, le pilote crée un objet de file d’attente d’infrastructure pour chaque flux et envoie le handle WDFQUEUE à UCX en appelant UcxStaticStreamsSetStreamInfo.
L’objet stream fournit plusieurs fonctions de rappel pour le contrôleur hôte afin d’aider UCX à gérer les flux statiques.
EVT_UCX_ENDPOINT_STATIC_STREAMS_DISABLE Libérer les ressources du contrôleur pour tous les flux d'un point de terminaison.
EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE
Activez le contrôleur matériel de tous les flux pour ce point de terminaison.
La durée de vie de l’objet et des files d’attente associées est gérée par UCX, et le pilote ne doit pas supprimer les objets.