Partilhar via


Drivers de botão HID

Use o driver de botão fornecido pela Microsoft para botões GPIO; caso contrário, implemente o driver que injeta dados HID no sistema operacional.

Os botões (Power, Windows, volume e bloqueio de rotação) são normalmente usados para tarefas que ocorrem enquanto o teclado físico não está disponível para o usuário, em fatores de forma como conversíveis ou ardósias. Os botões se declaram ao sistema operacional como dispositivos HID, fornecendo descritores de relatório de botões HID. Isso permite que o sistema interprete a finalidade e os eventos desses botões de forma padronizada. Quando o estado de um botão é alterado, esse evento é mapeado para um HID Usages. Um minidriver de transporte HID relata esses eventos para drivers de nível superior que, em seguida, enviam detalhes para clientes HID no modo de usuário ou modo kernel.

Para botões de E/S de uso geral físico (GPIO), o minidriver de transporte HID é um driver in-box fornecido pela Microsoft que relata os eventos com base nas interrupções recebidas nos recursos de hardware GPIO definidos.

O driver in-box não pode fazer a manutenção de um botão que não está conectado a uma linha de interrupção. Para esses botões, você precisa escrever um driver que exponha o botão como um botão HID e relate as alterações de estado para o driver de classe HID (fornecido pela Microsoft). Seu driver pode ser um driver de origem HID ou um driver de transporte HID.

Orientação para oferecer suporte a botões HID

Aqui estão algumas dicas gerais para ajudá-lo a decidir qual implementação você deve seguir se estiver criando botões HID.

gráfico de decisão para implementação de botões.

Usar o driver de botão in-box fornecido pela Microsoft

Descrição ACPI de um botão HID.

Se você estiver implementando um botão GPIO, descreva o botão na ACPI do sistema para que o Windows possa carregar o driver in-box, Hidinterrupt.sys, como o driver de botão que relata eventos ao sistema operacional.

A Microsoft incentiva você a usar os minidrivers de transporte in-box sempre que possível.

Escrever um driver de código-fonte HID no modo kernel

Botões usando o Virtual HID Framework.

Se você estiver implementando um botão não-GPIO, como um fluxo de dados no formato HID que precisa ser injetado por outro componente de software, poderá optar por escrever um driver de modo kernel. A partir do Windows 10, você pode escrever um driver de origem HID chamando interfaces de programação que se comunicam com o VHF (Virtual HID Framework) e obtém e define Relatórios HID de e para o driver de classe HID.

Como alternativa, você pode escrever um minidriver de transporte HID no modo kernel como suportado pelas versões anteriores do Windows. No entanto, não recomendamos essa abordagem porque minidrivers de transporte KMDF HID mal escritos podem travar o sistema.

Escrever um UMDF HID Minidriver

Minidriver de Transporte HID.

Se você estiver implementando um botão não-GPIO, em vez de usar o modelo anterior de escrever um driver de origem HID, poderá escrever um minidriver de transporte HID no modo de usuário. Esses drivers são mais fáceis de desenvolver do que os drivers de modo kernel e erros neste driver não verificam bugs em todo o sistema.

Drivers universais do Windows para botões HID

A partir do Windows 10, as interfaces de programação de driver HID fazem parte das edições baseadas no OneCoreUAP do Windows. Usando esse conjunto comum de interfaces, você pode escrever um driver de botão usando interfaces Virtual HID Framework ou Transport Minidrivers . Esses drivers serão executados no Windows 10 para edições de desktop (Home, Pro, Enterprise e Education) e no Windows 10 Mobile, bem como em outras versões do Windows 10.

Para obter orientação passo a passo, consulte Usando um arquivo INF universal.

Dispositivo de Interface Humana