Compartir a través de


Arquitectura HID

La arquitectura de la pila de controladores HID en Windows se basa en el controlador de clase denominado hidclass.sys. Los clientes y los minicontroladores de transporte acceden al controlador de clase desde el modo de usuario o el modo núcleo.

Controlador de clase HID

El controlador de clase HID proporcionado por el sistema es el controlador de función WDM y el controlador de bus para la clase de configuración de dispositivos HID (HIDClass). El componente ejecutable del controlador de clase HID es hidclass.sys. El controlador de clase HID es la interfaz de conexión entre los clientes HID y varios transportes, lo que permite escribir un cliente HID sin depender de los transportes. Este nivel de abstracción permite a los clientes seguir funcionando (con poca o ninguna modificación) cuando se introduce un nuevo estándar o un transporte de terceros.

El diagrama siguiente es una representación de la arquitectura HID.

Diagrama de una pila simplificada de controladores HID que muestra los clientes HID, el controlador de clase HID y los componentes de transporte HID.

El diagrama anterior incluye:

  • Clientes HID: identifica los clientes de Windows y de terceros y sus interfaces.
  • Controlador de clase HID: el ejecutable hidclass.sys .
  • Controlador mínimo de transporte HID: identifica los transportes de Windows y de terceros junto con sus interfaces.

Este es el diagrama de pila de dispositivos de un cliente y transporte HID genéricos.

Diagrama de una pila de dispositivos HID para un cliente HID genérico y su transporte.

Este es otro diagrama de pila de dispositivos que muestra colecciones de teclado y ratón HID mediante USB.

Diagrama de una pila de dispositivos HID para un teclado y el mouse sobre USB.

Clientes HID

Los clientes HID son controladores, servicios o aplicaciones que se comunican con HIDClass.sys y a menudo representan un tipo específico de dispositivo (por ejemplo, sensor, teclado, mouse, etc.). Identifican el dispositivo a través de un identificador de hardware o una colección HID específica y se comunican con la colección HID a través de las instrucciones siguientes.

Los controladores y aplicaciones en modo de usuario y los controladores en modo kernel hacen lo siguiente para operar colecciones HID:

  • Los controladores y las aplicaciones en modo de usuario usan rutinas de soporte de HIDClass (HidD_Xxx) para obtener información sobre una colección HID.
  • Los controladores en modo kernel, los controladores en modo de usuario y las aplicaciones emplean las rutinas de soporte de análisis HID (HidP_Xxx), y los controladores en modo kernel utilizan las IOCTL de los controladores de la clase HID para manejar los informes HID.

En la tabla siguiente se simplifica la información.

Modo Conductores APLICACIONES
Modo de usuario HidD_Xxx HidP_Xxx
Modo kernel HidD_Xxx o IOCTL_HID_xxx No disponible

Para obtener más información, consulte Apertura de colecciones HID.

Clientes HID compatibles con Windows

Windows admite las siguientes colecciones de nivel superior:

Página de uso Uso Notas Modo de acceso
0x0001 0x0001: 0x0002 Controlador de clase de ratón y controlador de mapeo Exclusivo
0x0001 0x0004: 0x0005 Controladores de juegos Compartido
0x0001 0x0006: 0x0007 Controlador de clase de teclado/teclado y controlador de mapeo Exclusivo
0x0001 0x000C Modificador del modo piloto Compartido
0x0001 0x0080 Controles del sistema (Potencia) Compartido
0x000C 0x0001 Controles del usuario Compartido
0x000D 0x0001 Dispositivo de lápiz externo Exclusivo
0x000D 0x0002 Dispositivo de lápiz integrado Exclusivo
0x000D 0x0004 Pantalla táctil Exclusivo
0x000D 0x0005 Panel táctil de precisión (PTP) Exclusivo
0x0020 *Múltiple Sensores Compartido
0x0084 0x0004 Batería HID UPS Compartido
0x008C 0x0002 Escáner de códigos de barras (hidscanner.dll) Compartido

En la tabla anterior, el modo de acceso para los clientes HID de entrada es exclusivo para evitar que otros clientes HID intercepten o reciban el estado de entrada global cuando no sean el destinatario de destino de esa entrada. Por motivos de seguridad, Raw Input Manager (RIM) abre todos estos dispositivos exclusivamente.

Si RIM abre un dispositivo en modo exclusivo , el usuario todavía puede abrir una interfaz de dispositivo HID sin solicitar permisos de lectura y escritura y obtener información del dispositivo HID a través de rutinas de soporte de HIDClass (HidD_GetXxx).

El modo de uso compartido permite que varias aplicaciones accedan a un dispositivo. Por ejemplo, varias aplicaciones pueden acceder a un escáner de códigos de barras para consultar las funcionalidades del dispositivo y recuperar estadísticas. Sin embargo, la recuperación de datos descodificados de un escáner de códigos de barras se realiza en modo exclusivo . Los usos se definen en las tablas de uso deUSB-IF.

*Múltiplo: los usos de sensores de 0x00 : 0xFF se segmentan con fines diferentes. Por ejemplo, 0x10 indica un sensor biométrico; 0x40 indica un sensor de luz. Esas asignaciones no son contiguas. Para obtener la lista de usos de sensores, consulte USB-IF Definiciones de clase de dispositivo para HID. Para obtener información sobre los usos de sensores que se admiten en Windows, consulte Usos de sensores HID.

El controlador de transporte HID

El controlador de clase HID está diseñado para usar minicontroladores HID para acceder a un dispositivo de hardware de entrada. Un minidriver HID abstrae la operación específica del dispositivo de los dispositivos de entrada que admite. El minidriver HID enlaza su operación al controlador de clase HID mediante el registro con el controlador de clase HID. El controlador de clase HID se comunica con un minidriver HID llamando a las rutinas de soporte del minidriver. El minidriver HID, a su vez, envía comunicaciones hacia abajo en la pila de controladores a un controlador de bus subyacente o controlador de puerto.

Transporte HID compatible con Windows

Para obtener una lista de los transportes HID admitidos, consulte información general sobre el transporte HID.

La prueba HID genérica de USB en el Kit de laboratorio de hardware (HLK) de Windows cubre los controladores HidUsb y HidClass. No hay ninguna prueba HLK para minidrivers HID de terceros.