Compartir a través de


Controlador serie USB (Usbser.sys)

Importante

Este tema es para programadores. Si es un cliente que experimenta problemas con USB, consulte Solución de problemas de USB-C en Windows

Use el controlador USB proporcionado por Microsoft (Usbser.sys) para las comunicaciones y el dispositivo de control CDC. Microsoft le anima a usar los controladores incluidos en Windows siempre que sea posible.

Versiones admitidas

  • Windows 11
  • Windows 10

Se aplica a

  • Fabricantes de dispositivos de control CDC

En Windows 10, el controlador se reescribió mediante el marco de controladores en modo kernel, lo que mejora la estabilidad general del controlador.

  • Se ha mejorado la administración de plug and play y energía por parte del controlador.
  • Se han agregado características de administración de energía, como suspensión selectiva USB.

Además, las aplicaciones para UWP ahora pueden usar las API proporcionadas por el espacio de nombres Windows.Devices.SerialCommunication que permite a las aplicaciones comunicarse con estos dispositivos.

Instalación de Usbser.sys

Cargue el controlador incluido en Microsoft (Usbser.sys) para las comunicaciones y el dispositivo de control CDC.

Nota:

Si intenta instalar un controlador de clase de dispositivo USB incluido en Windows, no es necesario descargar el controlador. Se instalan automáticamente. Si no se instalan automáticamente, póngase en contacto con el fabricante del dispositivo. Para obtener la lista de controladores de clase de dispositivo USB incluidos en Windows, consulte Controladores de clase de dispositivo USB incluidos en Windows.

A partir de Windows 10, Usbser.inf se agregó al directorio %Systemroot%\INF, que carga Usbser.sys como objeto de dispositivo funcional (FDO) en la pila de dispositivos. Si el dispositivo pertenece a la clase de dispositivo de control CDC y de comunicaciones, Usbser.sys se carga automáticamente. No es necesario escribir su propio INF para hacer referencia al controlador. El controlador se carga en función de una coincidencia de identificador compatible similar a otros controladores de clase de dispositivo USB incluidos en Windows.

USB\Class_02

USB\Class_02&SubClass_02

  • Si desea cargar Usbser.sys automáticamente, establezca el código de clase en 02 y el código de subclase en 02 en el Descriptor de dispositivo. Con este enfoque, no es necesario distribuir archivos INF para el dispositivo porque el sistema usa Usbser.inf. Para obtener más información, consulte Definiciones de clase para dispositivos de comunicación 1.2.

  • Si el dispositivo especifica el código de clase 02, pero un valor de código de subclase distinto de 02, Usbser.sys no se carga automáticamente. El administrador de Plug and Play intenta encontrar un controlador. Si no se encuentra un controlador adecuado, es posible que el dispositivo no tenga un controlador cargado. Es posible que tenga que cargar su propio controlador o escribir un INF que haga referencia a otro controlador incluido.

  • Si el dispositivo especifica códigos de clase y subclase en 02, y quiere cargar otro controlador en lugar de Usbser.sys, debe escribir un INF que especifique el identificador de hardware del dispositivo y el controlador que se va a instalar. Para obtener ejemplos, consulte los archivos INF que se incluyen con los controladores de ejemplo y busque dispositivos similares a su dispositivo. Para obtener información sobre las secciones INF, consulte Introducción a los archivos INF.

Configuración de la suspensión selectiva para Usbser.sys

A partir de Windows 10, Usbser.sys admite la suspensión selectiva USB. Permite que el dispositivo USB a serie conectado entre en un estado de baja energía cuando no está en uso, mientras que el sistema permanece en estado S0. Cuando se reanuda la comunicación con el dispositivo, el dispositivo puede salir del estado de suspensión y reanudar el estado de trabajo. La característica está deshabilitada de forma predeterminada y se puede habilitar y configurar estableciendo la entrada IdleUsbSelectiveSuspendPolicy en esta clave del Registro:

HKEY\LOCAL\MACHINE\SYSTEM\CurrentControlSet\Enum\USB\<hardware id>\<instance id>\Device Parameters

Para configurar las características de administración de energía de Usbser.sys, puede establecer IdleUsbSelectiveSuspendPolicy en:

  • "0x00000001": entra en estado de suspensión selectiva cuando está inactivo, es decir, cuando no hay transferencias de datos activas hacia o desde el dispositivo.

  • "0x00000000": entra en estado de suspensión selectiva solo cuando no hay identificadores abiertos para el dispositivo.

Esa entrada se puede agregar de una de estas dos maneras:

  • Escriba un INF que haga referencia al INF de instalación y agregue la entrada del Registro en la sección HW.AddReg.

  • Describa la entrada del Registro en un descriptor de características del sistema operativo de propiedades extendidas. Agregue una sección de propiedades personalizadas que establezca el campo bPropertyName en una cadena Unicode, "IdleUsbSelectiveSuspendPolicy" y wPropertyNameLength en 62 bytes. Establezca el campo bPropertyData en "0x00000001" o "0x00000000". Los valores de propiedad se almacenan como enteros de 32 bits little-endian.

    Para obtener más información, consulte Descriptores del SO Microsoft.

Desarrollo de aplicaciones Windows para un dispositivo USB CDC

A partir de Windows 10, una aplicación de Windows puede enviar solicitudes a Usbser.sys mediante el espacio de nombres Windows.Devices.SerialCommunication. Define clases de Windows Runtime que pueden usarse para comunicarse con un dispositivo USB CDC a través de un puerto serie o alguna abstracción de un puerto serie. Las clases proporcionan funcionalidad para detectar dicho dispositivo serie, leer y escribir datos, y controlar las propiedades específicas de serie para el control de flujo, tales como el establecimiento de la velocidad de baudios y los estados de señal.