Pilote série USB (Usbser.sys)

Important

Cette rubrique s’adresse aux développeurs. Si vous êtes un client rencontrant des problèmes USB, consultez Résoudre les problèmes USB courants

Utilisez le pilote USB fourni par Microsoft (Usbser.sys) pour vos communications et votre périphérique de contrôle CDC. Microsoft vous encourage à utiliser les pilotes inclus avec Windows chaque fois que possible.

Versions prises en charge

  • Windows 11
  • Windows 10

S’applique à

  • Fabricants d’appareils d’appareils de contrôle CDC

Dans Windows 10, le pilote a été réécrit à l’aide de l’infrastructure du pilote en mode noyau, ce qui améliore la stabilité globale du pilote.

  • Amélioration de la Plug-and-Play et de la gestion de l’alimentation par le pilote.
  • Ajout de fonctionnalités de gestion de l’alimentation telles que l’interruption sélective USB.

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 communiquer avec ces appareils.

installation Usbser.sys

Chargez le pilote intégré fourni par Microsoft (Usbser.sys) pour vos communications et votre périphérique de contrôle CDC.

Notes

Si vous essayez d’installer un pilote de classe de périphérique 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 de périphérique USB inclus dans Windows, consultez Pilotes de classe de périphérique USB inclus dans Windows.

À compter de Windows 10, Usbser.inf a été ajouté au répertoire %Systemroot%\INF, qui charge Usbser.sys en tant qu’objet de périphérique fonctionnel (FDO) dans la pile d’appareils. Si votre appareil appartient à la classe d’appareil de contrôle des communications et des captures de données modifiées, 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’une correspondance d’ID compatible similaire à d’autres pilotes de classe de périphérique USB inclus dans Windows.

USB\Class_02

USB\Class_02&SubClass_02

  • Si vous souhaitez charger automatiquementUsbser.sys , 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, consultez 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 responsable Plug-and-Play tente de trouver un pilote. Si aucun pilote approprié n’est trouvé, il se peut qu’aucun pilote ne soit chargé sur l’appareil. 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 sur 02, et que vous souhaitez 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, examinez les fichiers INF inclus avec des exemples de pilotes et recherchez des appareils similaires à votre appareil. Pour plus d’informations sur les sections INF, consultez Vue d’ensemble des fichiers INF.

Configurer la suspension sélective pour Usbser.sys

À partir de Windows 10, Usbser.sys prend en charge la suspension sélective USB. Il permet à l’appareil USB-à-série attaché d’entrer un état d’alimentation faible lorsqu’il n’est pas utilisé, tandis que le système reste à 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’alimentation de Usbser.sys, vous pouvez définir IdleUsbSelectiveSuspendPolicy sur :

  • « 0x00000001 » : entre la suspension sélective en cas d’inactivité, c’est-à-dire lorsqu’il n’y a aucun transfert de données actif vers ou depuis l’appareil.

  • « 0x00000000 » : entre en suspension sélective uniquement lorsqu’il n’y a pas de poignées ouvertes sur l’appareil.

Cette entrée peut être ajoutée de l’une des deux manières suivantes :

  • Écrivez un INF qui fait référence à l’inf d’installation et ajoutez l’entrée de Registre dans le HW. Section AddReg .

  • Décrire l’entrée de Registre dans un descripteur de fonctionnalité de système d’exploitation de propriétés étendues. Ajoutez une section de propriété personnalisée qui définit le champ bPropertyName sur une chaîne Unicode, « IdleUsbSelectiveSuspendPolicy » et wPropertyNameLength sur 62 octets. Définissez le champ bPropertyData sur « 0x00000001 » ou « 0x00000000 ». Les valeurs de propriété sont stockées sous forme d’entiers 32 bits little endian.

    Pour plus d’informations, consultez Descripteurs de système d’exploitation Microsoft.

Développer des applications Windows pour un périphérique CDC USB

À partir de Windows 10, une application Windows peut envoyer des requêtes à Usbser.sys à l’aide de l’espace de noms Windows.Devices.SerialCommunication. Il définit Windows Runtime classes qui peuvent utiliser pour communiquer avec un périphérique CDC USB via un port série ou une abstraction d’un port série. Les classes fournissent des fonctionnalités permettant de découvrir un périphérique série, de lire et d’écrire des données et de contrôler des propriétés spécifiques à la série pour le contrôle de flux, telles que la définition du débit en bauds et des états de signal.