Partilhar via


Arquitetura HID

A arquitetura da pilha de drivers HID no Windows é criada no driver de classe chamado hidclass.sys. Clientes e minidrivers de transporte acessam o driver de classe do modo de usuário ou do modo kernel.

O driver da classe HID

O controlador de classe HID fornecido pelo sistema é o controlador de função WDM e o controlador de barramento para a classe de instalação de dispositivo HID (HIDClass). O componente executável do driver de classe HID é hidclass.sys. O driver da classe HID é a cola entre os clientes HID e vários transportes, permitindo que um cliente HID seja escrito de forma independente dos transportes. Este nível de abstração permite que os clientes continuem a trabalhar (com poucas ou nenhumas modificações) quando um novo padrão ou um transporte de terceiros é introduzido.

O diagrama a seguir é uma representação da arquitetura HID.

Diagrama de uma pilha de drivers HID simplificada mostrando clientes HID, o driver de classe HID e componentes de transporte HID.

O diagrama anterior inclui:

  • Clientes HID – Identificam o Windows e os clientes de terceiros e suas interfaces.
  • Driver de classe HID - O executávelhidclass.sys.
  • Minidriver de transporte HID - Identifica os transportes do Windows e de terceiros, e suas interfaces.

Aqui está o diagrama de pilha de dispositivos de um cliente HID genérico e transporte.

Diagrama de um stack de dispositivos HID para um cliente HID genérico e transporte.

Aqui está outro diagrama de pilha de dispositivos que mostra as coleções de teclado e rato HID através de USB.

Diagrama de uma pilha de dispositivos HID para um teclado e mouse via USB.

Clientes HID

Os clientes HID são drivers, serviços ou aplicativos que se comunicam com HIDClass.sys e geralmente representam um tipo específico de dispositivo (por exemplo, sensor, teclado, mouse e assim por diante). Eles identificam o dispositivo por meio de um ID de hardware ou uma Coleção HID específica e se comunicam com a Coleção HID por meio das seguintes orientações.

Drivers e aplicações em modo utilizador e drivers em modo kernel realizam o seguinte para operar coleções HID:

  • Drivers e aplicativos de modo de usuário usam rotinas de suporte HIDClass (HidD_Xxx) para obter informações sobre uma coleção HID.
  • Controladores em modo kernel, controladores em modo utilizador e aplicações usam rotinas de suporte de análise HID (HidP_Xxx), e controladores em modo kernel utilizam IOCTLs de controlador de classe HID para processar relatórios HID.

A tabela a seguir simplifica as informações.

Modo Motoristas Aplicações
Modo de Utilizador HidD_Xxx HidP_Xxx
Modo Kernel HidD_Xxx OU IOCTL_HID_xxx N/A

Para obter mais informações, consulte Abrindo coleções HID.

Clientes HID suportados no Windows

O Windows suporta as seguintes coleções de nível superior:

Página de utilização Utilização Observações Modo de acesso
0x0001 0x0001 - 0x0002 Driver de classe de rato e driver de mapeador Exclusivo
0x0001 0x0004 - 0x0005 Controladores de jogos Partilhado
0x0001 0x0006 - 0x0007 Driver de classe de teclado / teclado numérico e driver de mapeamento Exclusivo
0x0001 0x000C Interruptor de modo de voo Partilhado
0x0001 0x0080 Controlos do sistema (alimentação) Partilhado
0x000C 0x0001 Controlos dos consumidores Partilhado
0x000D 0x0001 Dispositivo de caneta externa Exclusivo
0x000D 0x0002 Dispositivo de caneta integrado Exclusivo
0x000D 0x0004 Ecrã táctil Exclusivo
0x000D 0x0005 Touchpad de precisão (PTP) Exclusivo
0x0020 *Múltiplos Sensores Partilhado
0x0084 0x0004 Bateria HID UPS Partilhado
0x008C 0x0002 Scanner de código de barras (hidscanner.dll) Partilhado

Na tabela anterior, o modo de acesso para clientes HID de entrada é exclusivo para impedir que outros clientes HID intercetem ou recebam o estado de entrada global quando não forem o destinatário de destino dessa entrada. Por razões de segurança, o Raw Input Manager (RIM) abre todos esses dispositivos exclusivamente.

Se a RIM abrir um dispositivo no modo exclusivo , o usuário ainda poderá abrir uma interface de dispositivo HID sem solicitar permissões de leitura e gravação e obter informações do dispositivo HID por meio de rotinas de suporte HIDClass (HidD_GetXxx).

O modo de compartilhamento permite que vários aplicativos acessem um dispositivo. Por exemplo, vários aplicativos podem acessar um scanner de código de barras para perguntar sobre os recursos do dispositivo e recuperar estatísticas. No entanto, a recuperação de dados decodificados de um scanner de código de barras é feita no modo exclusivo . Os usos são definidos nas USB-IF Tabelas de Uso.

*Múltiplos: Usos de sensores de 0x00 – 0xFF são segmentados para diferentes fins. Por exemplo, 0x10 indica um sensor biométrico; 0x40 indica um sensor de luz. Essas alocações não são contíguas. Para obter a lista de usos do sensor, consulte USB-IF Device Class Definitions for HID. Para obter informações sobre os usos de sensores suportados no Windows, consulte Usos de sensores HID.

O motorista de transporte HID

O driver de classe HID foi projetado para usar minidrivers HID para acessar um dispositivo de entrada de hardware. Um minidriver HID abstrai a operação específica do dispositivo dos dispositivos de entrada suportados. O minidriver HID vincula a sua operação ao driver da classe HID ao registar-se com o driver da classe HID. O driver da classe HID comunica-se com um minidriver HID chamando as rotinas de suporte do minidriver. O minidriver HID, por sua vez, envia comunicações pela pilha de drivers para um driver de barramento ou porta subjacente.

Transportes HID suportados no Windows

Para obter uma lista de transportes HID suportados, consulte a Visão geral do transporte HID.

USB Generic HID Test no Windows Hardware Lab Kit (HLK) abrange os drivers HidUsb e HidClass. Não há teste HLK para minidrivers HID de terceiros.