Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
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.
Il 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 installazione del dispositivo HID (HIDClass). Il componente eseguibile del driver di classe HID è hidclass.sys. Il driver di classe HID funge da collegamento tra i client HID e vari trasporti, consentendo di scrivere un client HID in modo indipendente dai trasporti. Questo livello di astrazione consente ai client di continuare a funzionare (senza modifiche minime) quando viene introdotto un nuovo standard o un trasporto di terze parti.
Il diagramma seguente è una rappresentazione dell'architettura HID.
Il diagramma precedente include:
- Client HID: identifica i client Windows e di terze parti e le relative interfacce.
- Driver di classe HID: eseguibilehidclass.sys .
- Minidriver di trasporto HID: identifica i trasporti Windows e di terze parti e le relative interfacce.
Ecco il diagramma dello stack di dispositivi di un client HID generico e del protocollo di trasporto.
Ecco un altro diagramma dello stack di dispositivi che mostra le raccolte di tastiera e mouse HID su USB.
Clienti 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.
I driver e le applicazioni in modalità utente e i driver in modalità kernel eseguono 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 semplifica le informazioni.
| Modalità | Guidatori | Applicazioni |
|---|---|---|
| Modalità utente | HidD_Xxx | HidP_Xxx |
| Modalità kernel | HidD_Xxx OR IOCTL_HID_xxx | Non disponibile |
Per altre informazioni, vedere Apertura di raccolte HID.
Client HID supportato in Windows
Windows supporta le raccolte di livello superiore seguenti:
| Pagina di Utilizzo | Uso | Note | Modalità di accesso |
|---|---|---|---|
| 0x0001 | 0x0001 - 0x0002 | Driver di classe mouse e driver del mapper | Esclusivo |
| 0x0001 | 0x0004 - 0x0005 | Controller di gioco | Condiviso |
| 0x0001 | 0x0006 - 0x0007 | Driver di classe tastiera/tastierino e driver di mappatore | Esclusivo |
| 0x0001 | 0x000C | Opzione modalità di anteprima | Condiviso |
| 0x0001 | 0x0080 | Controlli di sistema (Energia) | Condiviso |
| 0x000C | 0x0001 | Controlli per i consumatori | Condiviso |
| 0x000D | 0x0001 | Dispositivo penna esterno | Esclusivo |
| 0x000D | 0x0002 | Dispositivo penna integrato | Esclusivo |
| 0x000D | 0x0004 | Touchscreen | Esclusivo |
| 0x000D | 0x0005 | Touchpad di precisione (PTP) | Esclusivo |
| 0x0020 | *Multiplo | Sensori | Condiviso |
| 0x0084 | 0x0004 | Batteria HID UPS | Condiviso |
| 0x008C | 0x0002 | 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 destinazione di tale input. Per motivi di sicurezza, Raw Input Manager (RIM) apre tutti questi dispositivi esclusivamente.
Se RIM apre un dispositivo in modalità esclusiva , 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 chiedere informazioni sulle funzionalità del dispositivo e recuperare le statistiche. Tuttavia, il recupero di dati decodificati da uno scanner di codice a barre viene eseguito in modalità esclusiva . Gli utilizzi vengono definiti nelle tabelle di utilizzoUSB-IF.
*Multiplo: gli utilizzi dei sensori di 0x00: 0xFF vengono segmentati per scopi diversi. Ad esempio, 0x10 indica un sensore biometrico; 0x40 indica un sensore di luce. Queste allocazioni non sono contigue. Per l'elenco degli utilizzi dei sensori, vedere USB-IF Definizioni di classi di dispositivi per HID. Per informazioni sull'utilizzo dei sensori supportati in Windows, vedere 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 il funzionamento specifico del dispositivo per i dispositivi di input che supporta. Il minidriver HID lega la sua operatività al driver di classe HID registrandosi al 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 lungo lo stack dei driver a un bus sottostante o a un driver di porta sottostante.
Trasporti HID supportati in Windows
Per un elenco dei trasporti HID supportati, vedere Panoramica del trasporto HID.
Test HID generico USB in Windows Hardware Lab Kit (HLK) copre i driver HidUsb e HidClass. Non esiste alcun test HLK per minidriver HID di terze parti.