Share via


Enumeración de dispositivos compuestos USB

Cuando un nuevo dispositivo USB está conectado a una máquina host, el controlador de bus USB crea un objeto de dispositivo físico (PDO) para el dispositivo y genera un evento PnP para notificar el nuevo PDO. A continuación, el sistema operativo consulta el controlador de bus para los identificadores de hardware asociados con el PDO.

Para todos los dispositivos USB, el controlador de bus USB notifica un identificador de dispositivo con el siguiente formato:

USB\VID_xxxx&PID_yyyy

Tenga en cuentaque los campos xxxx e aaaa se toman directamente de los campos idVendor e idProduct del descriptor de dispositivo, respectivamente.

El controlador de bus también informa de un identificador (ID) compatible de USB\COMPOSITE, si el dispositivo cumple los siguientes requisitos:

  • El campo de clase de dispositivo del descriptor de dispositivo (bDeviceClass) debe contener un valor de cero o la clase (bDeviceClass), subclase (bDeviceSubClass) y los campos de protocolo (bDeviceProtocol) del descriptor de dispositivo deben tener los valores 0xEF, 0x02 y 0x01 respectivamente, como se explica en El Descriptor de asociación de interfaz USB.

  • El dispositivo debe tener varias interfaces.

  • El dispositivo debe tener una única configuración.

El controlador de bus también comprueba los campos de clase de dispositivo (bDeviceClass), subclase (bDeviceSubClass) y protocolo (bDeviceProtocol) del descriptor de dispositivo. Si estos campos son cero, el dispositivo es un dispositivo compuesto y el controlador de bus notifica un identificador (ID) adicional compatible de USB\COMPOSITE para el PDO.

Después de recuperar el hardware y los identificadores compatibles para el nuevo PDO, el sistema operativo busca los archivos INF. Si uno de los archivos INF contiene una coincidencia para el identificador de dispositivo, Windows carga el controlador indicado por ese archivo INF y el controlador primario genérico no entra en juego. Si ningún archivo INF contiene el identificador de dispositivo y el PDO tiene un identificador compatible, Windows busca el identificador compatible. Esto genera una coincidencia en Usb.inf y hace que el sistema operativo cargue el controlador primario genérico USB (Usbccgp.sys).

Si desea que el controlador primario genérico administre el dispositivo, pero el dispositivo no tiene las características necesarias para asegurarse de que el sistema generará un identificador compatible de USB\COMPOSITE, tendrá que proporcionar un archivo INF que cargue el controlador primario genérico. El archivo INF debe contener una sección needs/includes que haga referencia a Usb.inf.

Si el dispositivo compuesto tiene varias configuraciones, el archivo INF que proporcione debe especificar qué configuración debe usar el elemento primario genérico en el Registro. Las claves del Registro necesarias se describen en Configuración de Usbccgp.sys para seleccionar una configuración USB no predeterminada.

Controlador primario genérico USB (Usbccgp.sys)
Controladores USB proporcionados por Microsoft