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.
Cet article décrit la prise en charge du système d’exploitation Windows pour le développement d’un pilote de contrôleur hôte USB (Universal Serial Bus) qui communique avec l’extension ucX (USB) fournie par Microsoft.
Si vous développez un contrôleur hôte xHCI qui n’est pas conforme à la spécification ou que vous développez un matériel non xHCI personnalisé (tel qu’un contrôleur hôte virtuel), vous pouvez écrire un pilote de contrôleur hôte qui communique avec UCX. Par exemple, considérez une station d’accueil sans fil qui prend en charge les périphériques USB. Le PC communique avec des périphériques USB via la station d’accueil sans fil à l’aide d’USB via TCP comme transport.
Extension du contrôleur hôte USB (UCX)
L’extension du contrôleur hôte USB est un pilote fourni par le système (Ucx01000.sys). Ce pilote est implémenté en tant qu’extension de classe d’infrastructure à l’aide des interfaces de programmation windows Driver Framework . Le pilote du contrôleur hôte sert de pilote client à cette extension de classe. Bien qu’un pilote de contrôleur hôte gère les opérations matérielles et les événements, la gestion de l’alimentation et les événements PnP, UCX sert d’interface abstraite qui met en file d’attente les demandes adressées au pilote du contrôleur hôte et effectue d’autres tâches.
UCX est l'un des pilotes USB côté hôte pour Windows. Il est chargé en tant que FDO dans la pile d’appareils du contrôleur hôte.
Pilote du contrôleur hôte USB
UCX est extensible et est conçu pour prendre en charge différents pilotes de contrôleur d’hôte. Windows fournit un pilote xHCI (Usbxhci.sys) qui cible les contrôleurs hôtes USB xHCI.
Le pilote du contrôleur hôte est un client d'UCX, implémenté comme pilote Kernel-Mode Driver Framework (KMDF).
Fichiers binaires fournis par Microsoft
Pour écrire un pilote de contrôleur hôte, vous avez besoin d’UCX (Ucx01000.sys) et de la bibliothèque stub (Ucx01000.lib). La bibliothèque stub se trouve dans le Kit de pilotes Windows (WDK). La bibliothèque exécute deux fonctions principales.
- Traduisez les appels effectués par le pilote du contrôleur hôte et transmettez-les à UCX.
- Fournit la prise en charge du contrôle de version. Un pilote de contrôleur hôte fonctionne avec UCX, uniquement si UCX a le même numéro de version principal que le pilote du contrôleur hôte et le même numéro de version secondaire ou supérieur que le pilote du contrôleur hôte.
Outils de développement
Le kit WDK contient des ressources requises pour le développement de pilotes, telles que les en-têtes, les bibliothèques, les outils et les exemples.
Télécharger des kits et des outils pour Windows
Get started
Lisez la spécification officielle qui décrit le comportement attendu de différents composants (appareil, contrôleur hôte et hub) de l’architecture.
xHCI pour le bus série universel : spécification
Comprendre l’architecture d’UCX
Familiarisez-vous avec la pile de pilotes USB fournie par Microsoft :
Pilotes côté hôte USB dans Windows
Architecture : extension du contrôleur hôte USB (UCX)
Familiarisez-vous avec les objets et les handles UCX
UCX étend la fonctionnalité d’objet WDF pour définir ses propres objets UCX spécifiques à USB. Pour plus d’informations sur les objets WDF, consultez Présentation des objets Framework.
Pour mettre en file d’attente les demandes adressées à n’importe quel pilote de contrôleur hôte sous-jacent, UCX utilise ces objets. Pour plus d’informations, consultez les objets UCX et les handles utilisés par un pilote de contrôleur hôte.
| Objet UCX | Descriptif |
|---|---|
| Objet contrôleur d’hôte (UCXCONTROLLER) | 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 EVT_WDF_DRIVER_DEVICE_ADD, en appelant la méthode UcxControllerCreate. |
| Objet hub racine (UCXROOTHUB) | 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 en appelant la méthode UcxRootHubCreate dans le rappel EVT_WDF_DRIVER_DEVICE_ADD. |
| Objet périphérique USB (UCXUSBDEVICE) | Représente un périphérique USB physique connecté au bus. Créé 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 . |
| Objet Point de terminaison (UCXENDPOINT) | Représente un point de terminaison sur un objet périphérique USB. Créé par le pilote du contrôleur hôte généralement dans le rappel EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD ou EVT_UCX_USBDEVICE_ENDPOINT_ADD en appelant la méthode **UcxEndpointCreate . |
| Objet de flux (UCXSTREAMS) | Représente un certain nombre de canaux vers l’appareil sur un point de terminaison en bloc unique. Créé généralement par le pilote du contrôleur hôte dans le rappel EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD en appelant la méthode UcxStaticStreamsCreate. |
Sections de documentation
Fonctions de rappel du root hub d'un driver de contrôleur hôte
UCX gère la plupart des opérations liées au hub racine. Cela permet au pilote du hub USB d’interagir avec le hub racine de la même façon qu’il interagit avec un hub standard. Le pilote du contrôleur hôte peut enregistrer ses fonctions de rappel.
Gérer les demandes d’E/S dans un pilote de contrôleur hôte USB
UCX trie les blocs de requête USB entrants (URB), puis les transfère à la file d’attente de point de terminaison appropriée.
Configurer des points de terminaison USB dans un pilote de contrôleur hôte
Le pilote du contrôleur hôte joue un rôle dans la gestion par UCX des files d’attente associées à ses points de terminaison et dans la programmation de points de terminaison dans le matériel du contrôleur.
Informations de référence sur l’extension du contrôleur hôte USB (UCX)
Fournit des spécifications pour les demandes d’E/S, les routines de support, les structures et les interfaces utilisées par le pilote client. Ces routines et structures de données associées sont définies dans les en-têtes WDK.
UCX est appelé extension de classe framework.
Le pilote du contrôleur hôte est appelé pilote client.