Pilote série USB (Usbser.sys)
Important
Cette rubrique s’adresse aux programmeurs. Si vous êtes un client et que vous rencontrez des problèmes liés à l'USB, consultez la section Corriger les problèmes liés à l'USB-C dans Windows.
Utilisez le pilote USB fourni par Microsoft (Usbser.sys) pour votre appareil de communication et de contrôle CDC. Microsoft vous encourage à utiliser les pilotes fournis avec Windows dans la mesure du possible.
Versions prises en charge
- Windows 11
- Windows 10
S’applique à
- Fabricants d'appareils de contrôle CDC
Dans Windows 10, le pilote a été réécrit en utilisant le cadre de pilote en mode noyau, ce qui améliore la stabilité globale du pilote.
- Amélioration du Plug-in et de la gestion de l'alimentation par le pilote.
- Ajout de fonctionnalités de gestion de l'alimentation, telles que l'USB Selective Suspend.
En outre, les applications UWP peuvent désormais utiliser les API fournies par l'espace de noms Windows.Devices.SerialCommunication qui permettent aux applications de dialoguer avec ces appareils.
Installation de Usbser.sys
Chargez le pilote fourni par Microsoft (Usbser.sys) pour votre appareil de communication et de contrôle CDC.
Remarque
Si vous essayez d'installer un pilote de classe d'appareil USB inclus dans Windows, vous n'avez pas besoin de télécharger le pilote. Ils sont installés automatiquement. S'ils ne sont pas installés automatiquement, contactez le fabricant de l'appareil. Pour obtenir la liste des pilotes de classe d'appareil USB inclus dans Windows, consultez Pilotes de classe de périphérique USB inclus dans Windows.
À partir de Windows 10, Usbser.inf a été ajouté au répertoire %Systemroot%\INF, qui charge Usbser.sys en tant qu'objet fonctionnel de périphérique (FDO) dans la pile de périphériques. Si votre appareil appartient à la classe des appareils de communication et de contrôle CDC, Usbser.sys est chargé automatiquement. Vous n'avez pas besoin d'écrire votre propre INF pour référencer le pilote. Le pilote est chargé en fonction d'un ID compatible, comme les autres pilotes de classe de périphérique USB inclus dans Windows.
USB\Class_02
USB\Class_02&SubClass_02
Si vous souhaitez charger Usbser.sys automatiquement, définissez le code de classe sur 02 et le code de sous-classe sur 02 dans le descripteur d'appareil. Avec cette approche, vous n'êtes pas obligé de distribuer des fichiers INF pour votre appareil car le système utilise Usbser.inf. Pour plus d'informations, voir Définitions de classe pour les appareils de communication 1.2.
Si votre appareil spécifie le code de classe 02 mais une valeur de code de sous-classe autre que 02, Usbser.sys ne se charge pas automatiquement. Le gestionnaire Plug-in essaie de trouver un pilote. Si aucun pilote approprié n'est trouvé, il se peut que l'appareil n'ait pas de pilote chargé. Vous devrez peut-être charger votre propre pilote ou écrire un INF qui fait référence à un autre pilote intégré.
Si votre appareil spécifie des codes de classe et de sous-classe à 02, et que vous voulez charger un autre pilote au lieu de Usbser.sys, vous devez écrire un INF qui spécifie l'ID matériel de l'appareil et le pilote à installer. Pour obtenir des exemples, consultez les fichiers INF inclus dans les exemples de pilotes et trouvez des appareils similaires au vôtre. Pour plus d'informations sur les sections INF, reportez-vous à la section Vue d'ensemble des fichiers INF.
Configurer la suspension sélective pour Usbser.sys
À partir de Windows 10, Usbser.sys prend en charge USB Selective Suspend. Elle permet à l'appareil USB-série connecté d'entrer dans un état de faible consommation lorsqu'il n'est pas utilisé, tandis que le système reste dans l'état S0. Lorsque la communication avec l'appareil reprend, l'appareil peut quitter l'état de suspension et reprendre l'état de fonctionnement. La fonctionnalité est désactivée par défaut et peut être activée et configurée en définissant l'entrée IdleUsbSelectiveSuspendPolicy sous cette clé de registre :
HKEY\LOCAL\MACHINE\SYSTEM\CurrentControlSet\Enum\USB\<hardware id>\<instance id>\Device Parameters
Pour configurer les fonctionnalités de gestion de l'énergie de Usbser.sys, vous pouvez définir IdleUsbSelectiveSuspendPolicy sur :
"0x00000001" : Entre en suspension sélective en cas d'inactivité, c'est-à-dire lorsqu'il n'y a pas de transferts de données actifs vers ou depuis l'appareil.
"0x00000000" : Entre en suspension sélective uniquement lorsqu'il n'y a pas de handles ouverts sur l'appareil.
Cette entrée peut être ajoutée de deux manières :
Rédigez un INF qui fait référence à l'INF d'installation et ajoutez l'entrée de registre dans la section HW.AddReg.
Décrivez l'entrée de registre dans un descripteur de fonctionnalité du système d'exploitation aux propriétés étendues. Ajoutez une section de propriété personnalisée qui définit le champ bPropertyName à une chaîne Unicode, "IdleUsbSelectiveSuspendPolicy" et wPropertyNameLength à 62 octets. Définissez le champ bPropertyData à "0x00000001" ou "0x00000000". Les valeurs des propriétés sont stockées sous forme d'entiers 32 bits de type little-endian.
Pour plus d'informations, consultez la section Descripteurs du système d'exploitation de Microsoft.
Développer des applications Windows pour un appareil USB CDC
À partir de Windows 10, une application Windows peut envoyer des requêtes à Usbser.sys en utilisant l'espace de noms Windows.Devices.SerialCommunication. Il définit les classes Windows Runtime qui peuvent être utilisées pour communiquer avec un appareil USB CDC par le biais d'un port série ou d'une certaine abstraction d'un port série. Les classes fournissent des fonctionnalités permettant de découvrir un tel appareil série, de lire et d'écrire des données, et de contrôler les propriétés spécifiques à la série pour le contrôle du flux, telles que le réglage du débit en bauds, l'état des signaux.