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 minidrivers de transporte acceden al controlador de clase desde el modo de usuario o el modo kernel.
Controlador de clase HID
El controlador de clase HID proporcionado por el sistema es el controlador de función WDM y el controlador de autobús para la clase de configuración de dispositivos HID (HIDClass). El componente ejecutable del controlador de clase HID es hidclass.sys. El controlador HID Class es el pegamento entre clientes HID y varios transportes. Esto permite que un cliente HID se escriba de forma independiente desde 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.
A continuación se muestra una representación arquitectónica.
El diagrama anterior incluye lo siguiente:
- Clientes HID: identifica los clientes de Windows y terceros y sus interfaces.
- Controlador de clase HID: el ejecutablehidclass.sys .
- HID Transport Minidriver: identifica los transportes de Windows y terceros y sus interfaces.
Este es el diagrama de pila de dispositivos de un cliente y transporte HID genéricos.
Este es otro diagrama de pila de dispositivos en el que se muestran las colecciones de teclado y mouse HID a través de 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:
- Las aplicaciones y los controladores 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 usan rutinas de compatibilidad con el análisis de HID (HidP_Xxx) y los controladores en modo kernel usan ICTL de controladores de clase HID para controlar informes HID.
La tabla siguiente es una simplificación de la información indicada anteriormente.
Modo | Controladores | APLICACIONES |
---|---|---|
Modo usuario | HidD_Xxx | HidP_Xxx |
Modo kernel | HidD_Xxx O IOCTL_HID_xxx | N/D |
Para obtener más información, consulte Apertura de colecciones HID.
Clientes HID admitidos en Windows
Windows admite las siguientes colecciones de nivel superior:
Página Uso | Uso | Windows 7 | Windows 8 | Windows 10 | Notas | Modo de acceso |
---|---|---|---|---|---|---|
0x0001 | 0x0001: 0x0002 | Sí | Sí | Sí | Controlador de clase mouse y controlador del asignador | Exclusivo |
0x0001 | 0x0004: 0x0005 | Sí | Sí | Sí | Controladores de juegos | Compartido |
0x0001 | 0x0006: 0x0007 | Sí | Sí | Sí | Controlador de clase teclado/teclado y controlador del asignador | Exclusivo |
0x0001 | 0x000C | No | Sí | Sí | Conmutador de modo piloto | Compartido |
0x0001 | 0x0080 | Sí | Sí | Sí | Controles del sistema (potencia) | Compartido |
0x000C | 0x0001 | Sí | Sí | Sí (tanto para Windows 10 como para Windows 10 Mobile) | Controles de consumidor | Compartido (tanto para Windows 10 como para Windows 10 Mobile) |
0x000D | 0x0001 | Sí | Sí | Sí | Dispositivo de lápiz externo | Exclusivo |
0x000D | 0x0002 | Sí | Sí | Sí | Dispositivo de lápiz integrado | Exclusivo |
0x000D | 0x0004 | Sí | Sí | Sí | Pantalla táctil | Exclusivo |
0x000D | 0x0005 | No | Sí | Sí | Panel táctil de precisión (PTP) | Exclusivo |
0x0020 | *Múltiples | No | Sí | Sí | Sensores | Compartido |
0x0084 | 0x0004 | Sí | Sí | Sí | Batería HID UPS | Compartido |
0x008C | 0x0002 | No | Sí (Windows 8.1 y versiones posteriores) | Sí | 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 son 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 técnico 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ódigo de barras se realiza en modo exclusivo . Los usos se definen mediante las tablas de uso de USB-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 Definiciones de clase de dispositivo USB-IF para HID. Para obtener información sobre los usos de sensores que se admiten en Windows, 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 entrada de hardware. 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 registrando con el controlador de clase HID. El controlador de clase HID se comunica con un minidriver HID mediante una llamada a las rutinas de soporte técnico del minidriver. A su vez, el minidriver HID envía comunicaciones por la pila del controlador a un controlador de puerto o bus subyacente.
Transportes HID admitidos en Windows
Consulte esta página para obtener una lista de los transportes HID admitidos.
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 controladores hid mini de terceros.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de