Introduction à WinUSB pour les développeurs
En tant que développeur de pilotes, la compréhension de WinUSB (Windows USB) peut simplifier considérablement votre processus de développement, en particulier lorsque vous utilisez des périphériques USB. WinUSB est un pilote générique inclus dans Windows qui vous permet de communiquer avec des périphériques USB sans avoir besoin d’écrire un pilote personnalisé. Cela peut vous faire gagner du temps, réduire la complexité et garantir la compatibilité entre différentes versions de Windows.
Avantages clés de l’utilisation de WinUSB
Développement simplifié :
- Facilité d’utilisation : WinUSB extrait une grande partie de la complexité impliquée dans la communication USB, ce qui facilite l’interaction avec les périphériques USB.
- Aucun pilote personnalisé nécessaire : pour de nombreux périphériques USB, WinUSB peut être utilisé directement, ce qui élimine la nécessité d’écrire et de gérer un pilote personnalisé.
Compatibilité multiplateforme :
- Interface standardisée : WinUSB fournit une interface standardisée pour la communication USB, qui peut être bénéfique pour garantir la compatibilité entre différentes versions de Windows.
Temps et efficacité des coûts :
- Temps de développement réduit : l’utilisation de WinUSB peut réduire considérablement le temps nécessaire pour développer et tester un pilote USB.
- Coûts de maintenance inférieurs : Étant donné que WinUSB est géré par Microsoft, vous pouvez vous appuyer sur celui-ci mis à jour et pris en charge, ce qui réduit les coûts de maintenance à long terme.
Accès aux fonctionnalités USB :
- Fonctionnalités USB complètes : WinUSB prend en charge un large éventail de fonctionnalités USB, notamment les transferts en bloc, les transferts de contrôle, les transferts d’interruption et les transferts isochrones.
Ce que vous pouvez accomplir avec WinUSB
Communication de l’appareil :
- Transfert de données : envoyez et recevez des données vers et depuis un périphérique USB à l’aide de transferts en bloc, de contrôle, d’interruption ou d’isochrones.
- Demandes de contrôle : envoyez des demandes de contrôle pour configurer l’appareil ou récupérer des informations.
Configuration de l’appareil :
- Configuration de la configuration : configurez l’appareil USB en sélectionnant des configurations, des interfaces et d’autres paramètres.
- Gestion des points de terminaison : gérer les points de terminaison pour le transfert de données.
Énumération de l’appareil :
- Identification de l’appareil : énumérez et identifiez les périphériques USB connectés au système.
- Récupération du descripteur : récupérer des descripteurs d’appareil, des descripteurs de configuration, des descripteurs d’interface et des descripteurs de point de terminaison.
Applications personnalisées :
- Applications en mode utilisateur : développez des applications en mode utilisateur qui communiquent avec des périphériques USB à l’aide de l’API WinUSB.
- Mises à jour du microprogramme : implémentez des mécanismes de mise à jour du microprogramme pour les périphériques USB.
Test et débogage :
- Prototypage : prototype rapide de communication d’appareil USB pour tester les fonctionnalités matérielles.
- Débogage : utilisez WinUSB pour déboguer les problèmes de communication entre l’hôte et l’appareil USB.
Composants de WinUSB
WinUSB comprend
- Pilote en mode noyau (winusb.sys)
- Bibliothèque de liens dynamiques en mode utilisateur (winusb.dll) qui expose les fonctions WinUSB décrites dans winusb.h. Vous pouvez utiliser ces fonctions pour gérer les appareils USB avec un logiciel en mode utilisateur.
Par défaut, winusb.sys est installé dans la pile en mode noyau de l’appareil en tant que pilote de filtre supérieur. Les applications communiquent avec le pilote de fonction UMDF de l'appareil pour émettre des requêtes de lecture, d'écriture ou de contrôle des E/S de l'appareil. Dans cette configuration, winusb.sys sert de propriétaire d’alimentation et de Plug-and-Play de la pile d’appareils. Vous pouvez également installer winusb.sys en tant que pilote de fonction pour un périphérique USB.
Prise en main de WinUSB
Cette section contient des informations sur :
- la sélection du pilote approprié pour un appareil
- L'utilisation de WinUSB pour communiquer avec les appareils USB
- Installation de winusb.sys en tant que pilote de fonction pour un périphérique USB
Vous trouverez également des exemples de code détaillés qui montrent comment les applications et les périphériques USB communiquent.
Remarque
WinUSB prend en charge les transferts isochrones à partir de Windows 8.