Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
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.
Aqui está outro diagrama de pilha de dispositivos que mostra as coleções de teclado e rato HID através de 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.