Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A arquitetura da pilha de driver HID no Windows baseia-se no driver de classe chamado hidclass.sys. Os clientes e os minidrivers de transporte acessam o driver de classe no modo de usuário ou no modo kernel.
O driver de classe HID
O driver de classe HID fornecido pelo sistema é o driver de função WDM e o driver de barramento para a classe de configuração de dispositivo HID (HIDClass). O componente executável do driver de classe HID é hidclass.sys. O driver de classe HID é a ponte entre clientes HID e vários meios de transporte, permitindo que um cliente HID seja escrito de maneira independente dos meios de transporte. Esse nível de abstração permite que os clientes continuem a trabalhar (com pouca ou nenhuma modificação) quando um novo padrão ou um transporte de terceiros é introduzido.
O diagrama a seguir é uma representação da arquitetura HID.
O diagrama anterior inclui:
- Clientes HID – identifica os clientes Windows e os de terceiros e suas interfaces.
- Driver de classe HID - O hidclass.sys executável.
- Minidriver de transporte HID – identifica os transportes do Windows e de terceiros, além de suas interfaces.
Aqui está o diagrama da pilha de dispositivos de um cliente HID genérico e transporte.
Aqui está outro diagrama de pilha de dispositivos mostrando as coleções de teclado HID e mouse por 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 uma ID de hardware ou uma coleção HID específica e se comunicam com a Coleção HID por meio das diretrizes a seguir.
Drivers e aplicativos em modo usuário e drivers de modo kernel realizam o seguinte para operar coleções HID:
- Os drivers e aplicativos no modo de usuário usam rotinas de suporte HIDClass (HidD_Xxx) para obter informações sobre uma coleção de dispositivos HID.
- Drivers em modo kernel, drivers em modo de usuário e aplicativos usam rotinas de suporte para análise HID (HidP_Xxx), e drivers em modo kernel usam IOCTLs do driver de classe HID para processar relatórios HID.
A tabela a seguir simplifica as informações.
| Modo | Motoristas | Aplicativos |
|---|---|---|
| Modo de Usuário | HidD_Xxx | HidP_Xxx |
| Modo Kernel | HidD_Xxx OU IOCTL_HID_xxx | Não aplicável |
Para obter mais informações, consulte Abrir coleções HID.
Clientes HID com suporte no Windows
O Windows dá suporte às seguintes coleções de nível superior:
| Página de uso | Uso | Anotações | Modo de acesso |
|---|---|---|---|
| 0x0001 | 0x0001 - 0x0002 | Driver de classe do mouse e driver de mapeador | Exclusivo |
| 0x0001 | 0x0004 - 0x0005 | Controladores de jogo | Compartilhado |
| 0x0001 | 0x0006 - 0x0007 | Driver de classe de teclado/teclado numérico e driver de mapeamento | Exclusivo |
| 0x0001 | 0x000C | Opção de modo de voo | Compartilhado |
| 0x0001 | 0x0080 | Controles de sistema (Energia) | Compartilhado |
| 0x000C | 0x0001 | Controles do consumidor | Compartilhado |
| 0x000D | 0x0001 | Dispositivo de caneta externa | Exclusivo |
| 0x000D | 0x0002 | Dispositivo de caneta integrada | Exclusivo |
| 0x000D | 0x0004 | Tela sensível ao toque | Exclusivo |
| 0x000D | 0x0005 | PTP (touchpad de precisão) | Exclusivo |
| 0x0020 | *Múltiplo | Sensores | Compartilhado |
| 0x0084 | 0x0004 | Bateria HID UPS | Compartilhado |
| 0x008C | 0x0002 | Scanner de código de barras (hidscanner.dll) | Compartilhado |
Na tabela anterior, o modo de acesso para clientes HID de entrada é exclusivo para impedir que outros clientes HID interceptem ou recebam estado de entrada global quando eles não são o destinatário de destino dessa entrada. Por motivos de segurança, o RIM (Raw Input Manager) abre todos esses dispositivos exclusivamente.
Se o 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 de 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 tabelas de usoUSB-IF.
*Múltiplo: os usos de sensores de 0x00 – 0xFF são segmentados para diferentes finalidades. 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 definições de classe de dispositivo para HID. Para obter informações sobre os usos de sensores com suporte no Windows, consulte Usos de sensores HID.
O driver 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 aos quais ele dá suporte. O minidriver HID vincula sua operação ao driver de classe HID ao se registrar com este. O driver de classe HID se comunica com um minidriver HID chamando as rotinas de suporte do minidriver. O minidriver HID, por sua vez, envia comunicações pela pilha de motoristas para um motorista de ônibus ou porta subjacente.
Protocolos de Transporte HID com suporte no Windows
Para obter uma lista de transportes HID com suporte, consulte a Visão geral do transporte HID.
USB Generic HID Test no Kit do Windows Hardware Lab (HLK) abrange os drivers HidUsb e HidClass. Não há nenhum teste HLK para minidrivers HID de terceiros.