Controladores de botón HID

Use el controlador de botón proporcionado por Microsoft para los botones GPIO; De lo contrario, implemente el controlador que inserta datos HID en el sistema operativo.

Los botones (Encendido, Windows, volumen y bloqueo de rotación) se usan normalmente en tareas que se realizan cuando el teclado físico no está disponible para el usuario, en factores de forma como los convertibles o las tabletas. Los botones se declaran en el sistema operativo como dispositivos HID proporcionando descriptores de informe de botón HID. Esto permite al sistema interpretar el propósito y los eventos de esos botones de una manera estandarizada. Cuando cambia el estado de un botón, ese evento se asigna a los usos de HID. Un minidriver de transporte HID informa de esos eventos a los controladores de nivel superior que luego envían detalles a los clientes HID en modo de usuario o modo kernel.

En el caso de los botones físicos de E/S de uso general (GPIO), el minidriver de transporte HID es un controlador integrado proporcionado por Microsoft que informa sobre los eventos basándose en las interrupciones que se reciben en los recursos de hardware GPIO definidos.

El controlador en caja no puede atender un botón que no esté conectado a una línea de interrupción. Para estos botones, debe escribir un controlador que exponga el botón como un botón HID e informa de los cambios de estado en el controlador de clase HID (proporcionado por Microsoft). El controlador podría ser un controlador de origen HID o un controlador de transporte HID.

Guía para admitir botones HID

Estos son algunos punteros generales que le ayudarán a decidir qué implementación debe seguir si va a crear botones HID.

gráfico de decisión para implementar botones.

Usar el controlador de botones integrado proporcionado por Microsoft

Descripción ACPI de un botón HID.

Si va a implementar un botón GPIO, describa el botón del sistema ACPI para que Windows pueda cargar el controlador en caja, Hidinterrupt.sys, como controlador de botón que informa de eventos al sistema operativo.

Microsoft le anima a usar los minidrivers de transporte integrados siempre que sea posible.

Escritura de un controlador de origen HID en modo kernel

Botones usando Virtual HID Framework.

Si va a implementar un botón que no sea GPIO, como un flujo de datos en el formato HID que otro componente de software debe insertar, puede elegir escribir un controlador en modo kernel. A partir de Windows 10, puedes escribir un controlador de origen HID llamando a interfaces de programación que se comunican con Virtual HID Framework (VHF) y obtiene y establece informes HID en y desde el controlador de clase HID.

Como alternativa, puede escribir un minidriver de transporte HID en modo núcleo que es compatible con las versiones anteriores de Windows. Sin embargo, no se recomienda este enfoque porque los controladores miniatura de transporte HID de KMDF mal diseñados pueden bloquear el sistema.

Escribir un minidriver HID de UMDF

Minidriver de transporte HID.

Si va a implementar un botón que no sea GPIO, en lugar de usar el modelo anterior de escritura de un controlador de origen HID, puede escribir un minidriver de transporte HID en modo de usuario. Estos controladores son más fáciles de desarrollar que los controladores en modo kernel, y los errores en este controlador no hacen que se bloquee todo el sistema.

Controladores universales de Windows para botones HID

A partir de Windows 10, las interfaces de programación de controladores HID forman parte de las ediciones basadas en OneCoreUAP de Windows. Puede escribir un controlador de botón mediante un conjunto común de interfaces utilizando Virtual HID Framework o Transport Minidrivers. Esos controladores se ejecutarán en Windows 10 para ediciones de escritorio (Home, Pro, Enterprise y Education) y Windows 10 Mobile, así como en otras versiones de Windows 10.

Para obtener instrucciones paso a paso, consulte Uso de un archivo INF universal.

Dispositivo de interfaz humana