Architettura HID
L'architettura dello stack di driver HID in Windows è basata sul driver di classe denominato hidclass.sys. I client e i minidriver di trasporto accedono al driver di classe dalla modalità utente o dalla modalità kernel.
Driver di classe HID
Il driver di classe HID fornito dal sistema è il driver di funzione WDM e il driver del bus per la classe di configurazione del dispositivo HID (HIDClass). Il componente eseguibile del driver di classe HID è hidclass.sys. Il driver di classe HID è l'associazione tra client HID e vari trasporti. In questo modo un client HID può essere scritto in modo indipendente dai trasporti. Questo livello di astrazione consente ai client di continuare a funzionare (con poche modifiche) quando viene introdotto un nuovo standard o un trasporto di terze parti.
Di seguito è riportata una rappresentazione architetturale.
Il diagramma precedente include quanto segue:
- Client HID: identifica i client Windows e di terze parti e le relative interfacce.
- Driver di classe HID: hidclass.sys eseguibile.
- Minidriver trasporto HID: identifica i trasporti di Windows e di terze parti e le relative interfacce.
Ecco il diagramma dello stack di dispositivi di un client e trasporto HID generico.
Ecco un altro diagramma dello stack di dispositivi che mostra le raccolte di mouse e tastiera HID su USB.
Client HID
I client HID sono driver, servizi o applicazioni che comunicano con HIDClass.sys e spesso rappresentano un tipo specifico di dispositivo (ad esempio sensore, tastiera, mouse e così via). Identificano il dispositivo tramite un ID hardware o una raccolta HID specifica e comunicano con la raccolta HID tramite le indicazioni seguenti.
Driver e applicazioni in modalità utente e driver in modalità kernel, eseguire le operazioni seguenti per gestire le raccolte HID:
- I driver e le applicazioni in modalità utente usano routine di supporto HIDClass (HidD_Xxx) per ottenere informazioni su una raccolta HID.
- I driver in modalità kernel, i driver in modalità utente e le applicazioni usano routine di supporto per l'analisi HID (HidP_Xxx) e i driver in modalità kernel usano IOCTL del driver di classe HID per gestire i report HID.
La tabella seguente è una semplificazione delle informazioni elencate in precedenza.
Mode | Driver | Applicazioni |
---|---|---|
Modalità utente | HidD_Xxx | HidP_Xxx |
Modalità kernel | HidD_Xxx OR IOCTL_HID_xxx | N/D |
Per altre informazioni, vedere Apertura di raccolte HID.
Client HID supportati in Windows
Windows supporta le raccolte di primo livello seguenti:
Pagina Utilizzo | Utilizzo | Windows 7 | Windows 8 | Windows 10 | Note | Modalità di accesso |
---|---|---|---|---|---|---|
0x0001 | 0x0001 - 0x0002 | Sì | Sì | Sì | Driver di classe mouse e driver del mapper | Esclusivo |
0x0001 | 0x0004 - 0x0005 | Sì | Sì | Sì | Controller di gioco | Condiviso |
0x0001 | 0x0006 - 0x0007 | Sì | Sì | Sì | Driver di classe tastiera/tastierino del tastierino e del mapper | Esclusivo |
0x0001 | 0x000C | No | Sì | Sì | Opzione modalità di anteprima | Condiviso |
0x0001 | 0x0080 | Sì | Sì | Sì | Controlli di sistema (alimentazione) | Condiviso |
0x000C | 0x0001 | Sì | Sì | Sì (sia per Windows 10 che per Windows 10 Mobile) | Controlli consumer | Condiviso (sia per Windows 10 che per Windows 10 Mobile) |
0x000D | 0x0001 | Sì | Sì | Sì | Dispositivo penna esterno | Esclusivo |
0x000D | 0x0002 | Sì | Sì | Sì | Dispositivo penna integrato | Esclusivo |
0x000D | 0x0004 | Sì | Sì | Sì | Touchscreen | Esclusivo |
0x000D | 0x0005 | No | Sì | Sì | Touchpad precisione (PTP) | Esclusivo |
0x0020 | *Più | No | Sì | Sì | Sensori | Condiviso |
0x0084 | 0x0004 | Sì | Sì | Sì | Batteria HID UPS | Condiviso |
0x008C | 0x0002 | No | Sì (Windows 8.1 e versioni successive) | Sì | Scanner di codice a barre (hidscanner.dll) | Condiviso |
Nella tabella precedente, la modalità di accesso per i client HID di input è esclusiva per impedire ad altri client HID di intercettare o ricevere lo stato di input globale quando non sono il destinatario di tale input di destinazione. Per motivi di sicurezza, Gestione input non elaborato (RIM) apre esclusivamente tutti questi dispositivi.
Se un dispositivo viene aperto in modalità esclusiva da RIM, l'utente può comunque aprire un'interfaccia del dispositivo HID senza richiedere autorizzazioni di lettura e scrittura e ottenere informazioni sul dispositivo HID tramite routine di supporto HIDClass (HidD_GetXxx).
La modalità di condivisione consente a più applicazioni di accedere a un dispositivo. Ad esempio, più applicazioni possono accedere a uno scanner di codice a barre per richiedere informazioni sulle funzionalità del dispositivo e recuperare le statistiche. Tuttavia, il recupero dei dati decodificati da uno scanner di codice a barre viene eseguito in modalità esclusiva . Gli utilizzi sono definiti dalle tabelle di utilizzo USB-IF.
*Multiplo: l'utilizzo dei sensori da 0x00 : 0xFF vengono segmentati per scopi diversi. Ad esempio 0x10 indica un sensore biometrico; 0x40 indica un sensore di luce. Tali allocazioni non sono contigue. Per l'elenco degli utilizzi dei sensori, vedere Definizioni della classe di dispositivi USB-IF per HID. Per informazioni sull'utilizzo dei sensori supportati in Windows, utilizzo di sensori HID.
Driver di trasporto HID
Il driver di classe HID è progettato per usare minidriver HID per accedere a un dispositivo di input hardware. Un minidriver HID astrae l'operazione specifica del dispositivo dei dispositivi di input supportati. Il minidriver HID associa l'operazione al driver di classe HID registrando con il driver di classe HID. Il driver di classe HID comunica con un minidriver HID chiamando le routine di supporto del minidriver. Il minidriver HID, a sua volta, invia le comunicazioni verso il basso lo stack di driver a un bus o un driver di porta sottostante.
Trasporti HID supportati in Windows
Vedere questa pagina per un elenco dei trasporti HID supportati.
Il test HID generico USB in Windows Hardware Lab Kit (HLK) copre i driver HidUsb e HidClass. Non esiste alcun test HLK per i mini driver HID di terze parti.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per