Architecture de l'émulation d'appareils USB
Cet article décrit l'architecture de l'émulation de périphérique USB (UDE), qui émule le comportement d'un contrôleur hôte USB et d'un appareil connecté. Grâce à l'UDE, un matériel non USB peut communiquer avec les couches supérieures en utilisant les pilotes USB côté hôte dans Windows.
Pilotes UDE
Dans l'image précédente,
- Le pilote du hub USB (Usbhub3.sys) est un pilote KMDF (kernel mode driver framework). Le pilote de 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érique physique (PDO) d'appareils USB et d'autres hubs qui pourraient être attachés à leurs ports en aval.
- L'extension du contrôleur d'hôte USB (Ucx01000.sys) est une couche d'abstraction du pilote de hub dans la pile, et fournit un mécanisme générique pour la mise en file d'attente des requêtes vers le pilote de contrôleur d'hôte sous-jacent.
- L'extension de classe UDE (UdeCx) est un appel au pilote client UDE par le biais de fonctions de rappel implémentées par le client. L'extension de classe fournit des routines permettant au pilote client de créer des objets UDE et de les gérer.
- Le pilote client UDE gère le matériel, en interagissant à la fois avec le cadre du pilote Windows (WDF) et les API UDE. Le bord supérieur communique à la fois avec le WDF et l'extension de classe UDE à l'aide de constructions USB. Le bord inférieur communique avec le matériel à l'aide de l'interface du matériel.
- Matériel personnalisé : Par exemple, un matériel PCI peut être émulé pour fonctionner comme un appareil USB.
Nœuds d'appareils UDE
Voici les piles d'appareils chargées pour le pilote client UDE :