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.
Usar o driver de botão in-box fornecido pela Microsoft
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.
- Dispositivo de botão ACPI
- Comportamento do botão
- Botões de exemplo ACPI para Windows 10 Core Editions
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
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 escrever um driver de origem HID que interage com o Virtual HID Framework (VHF)
- Referência do Virtual HID Framework
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
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.
- Criando minidrivers UMDF HID
- IOCTLs de Minidriver UMDF HID"
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.