Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive il supporto "plug and play" per i dispositivi che supportano HID su trasporto I2C.
Caricamento driver
Windows carica il driver di classe HID I2C in base a una corrispondenza di identificatore compatibile tra un identificatore hardware e l'INF. La configurazione avanzata e l'interfaccia di alimentazione (ACPI) generano l'identificatore. L'identificatore hardware viene generato per il nodo del dispositivo I2C in ACPI. Tutti i dispositivi compatibili con HID I2C devono esporre l'identificatore di compatibilità, oltre a un identificatore hardware univoco.
La specifica ACPI 5.0 include il supporto per i dispositivi di classe HID. Le definizioni ACPI per HID I2C sono le seguenti.
Campo | valore | Oggetto ACPI | Formato | Commenti |
---|---|---|---|---|
ID compatibile | PNP0C50 | _CID | Stringa nel formato di ACPI0C50 o PNP0C50 | CompatibleID |
Hardware ID | Specifico del fornitore | _HID | Stringa nel formato VVVVddddd (ad esempio NVDA0001) | VendorID + DeviceID |
Sottosistema | Specifica del fornitore | _SUB | Stringa nel formato VVVVssss (ad esempio INTL1234) | SubVendorID + SubSystemID |
Revisione hardware | Specifico del fornitore | _HRV | 0xRRRR (revisione a due byte) | RevisionID |
Impostazioni risorse correnti | Specifico del fornitore | _CRS | Flusso di byte | Deve includere I2CSerialBus e GPIO_INT rispettivamente per il controller I2C e le interruzioni GPIO. |
Metodo specifico del dispositivo | GUID {3CDFF6F7-4267-4555-AD05-B30A3D8938DE} | _DSM | Pacchetto | Definisce una struttura che contiene l'indirizzo del descrittore HID. |
Ogni dispositivo HID I2C deve fornire i campi obbligatori seguenti:
- ID compatibile
- Hardware ID
- Revisione hardware
- Impostazioni risorse correnti
- Metodo specifico del dispositivo
Per altre informazioni, vedere Advanced Configuration and Power Interface Specification Version 5.0 .For more information, see the Advanced Configuration and Power Interface Specification Version 5.0.
Gli ID hardware e gli ID compatibili seguenti forniscono un esempio per un dispositivo I2C HID casuale. Questi dettagli sono basati su un dispositivo di esempio che segnala se stesso come HID con una raccolta di livello superiore della classe "specifica del fornitore".
Advanced Configuration and Power Interface (ACPI) genera i seguenti ID hardware e ID compatibili per caricare il driver di trasporto I2C HID:
Identificatori hardware: identificatori compatibili
ACPI\Vid_xxxx&Pid_yyyy&Rev_zzzz;: ACPI\PNP0C50
ACPI\Vid_xxxxPid_yyyy;:
ACPI\xxxxyyyy;:
Nell'esempio precedente l'ID hardware è stato generato usando i valori estratti dal metodo ACPI _HID per il dispositivo di esempio. L'ID compatibile viene generato usando i valori estratti dal metodo ACPI _CID per il dispositivo di esempio. L'ID compatibile per un HID su I2C deve essere sempre PNP0C50 per la versione 1.0.
Nota Se si specifica un INF, è consigliabile usare solo gli identificatori hardware nella colonna sinistra della tabella precedente. Non usare l'identificatore compatibile nella colonna destra.
L'ID hardware per il nodo del dispositivo client HID generato dal componente HIDClass.sys è il seguente:
Identificatore hardware: identificatore compatibile
HID\VEN_MSFT&DEV_0010&REV_0002&Col01;: N/A
-HID\VEN_MSFT&DEV_0010&Col01 HID\MSFT0010&Col01;: N/A
-HID\*MSFT0010Col01: N/A
-HID_DEVICE_UP:FF00_U:0001;: N/A
-HID_DEVICE: N/A
HIDClass.sys genera l'ID hardware ed è identico per tutti i trasporti. Questo identificatore si basa sui valori passati a HIDClass.sys da HIDI2C.sys (estratti da ACPI).
Sequenza di enumerazione del dispositivo
Una volta caricato un driver di dispositivo I2C HID (HIDI2C.sys), inizia a comunicare con il dispositivo tramite il bus I2C. La prima operazione eseguita dal driver è la sequenza di enumerazione del dispositivo.
L'elenco seguente fornisce la sequenza di enumerazione . L'ordine di questo elenco potrebbe cambiare nelle versioni future di Windows.
Recuperare il codice ACPI Source Language (ASL) per HID I2C DEVICE dal BIOS di sistema.
Recuperare il descrittore HID dal dispositivo.
- Scrivere l'indirizzo del descrittore HID
- Leggi descrittore HID
Eseguire un SET_POWER al dispositivo.
- Comando Write SET_POWER
Eseguire un reset (reimpostazione avviata dall'host) sul dispositivo.
- Scrivi il comando RESET
- Il dispositivo attiva l'interruzione GPIO
- Leggere il valore (0x00 0x00) dal registro di input
Recuperare il descrittore di report dal dispositivo.
- Scrivere l'indirizzo del descrittore del report
- Leggere il descrittore di report
Se l'host non riesce a completare correttamente uno dei passaggi da 1 a 5 con il dispositivo, il driver HIDI2C potrebbe caricare con il valore di errore Codice 10. Non esiste alcuna logica di ripetizione dei tentativi incorporata in nessuno di questi comandi.
Nota: i passaggi 4 e 5 possono essere eseguiti in parallelo per ottimizzare il tempo in I2C. Poiché i descrittori di report sono (a) statici e (b) lunghi, Windows 8 potrebbe emettere una richiesta per 5 mentre attende una risposta dal dispositivo per 4.
Comandi HID I2C supportati
HIDI2C.SYS driver supporta i comandi seguenti:
Comando | Come viene utilizzato | Quando viene usato |
---|---|---|
Reset (Ripristina) | Windows supporta la reimpostazione avviata dall'host. | Windows rilascia questo comando durante gli scenari seguenti: inizializzazione del dispositivo - disabilita/abilita - disinstallazione/reinstallazione |
Ottieni/Imposta_Rapporto | Windows supporta i comandi Get / Set_Report. | Questo comando viene eseguito durante gli scenari seguenti: quando un driver client HID emette una richiesta di report sulle funzionalità get/set, quando un driver client HID genera un report di input/output sincrono |
Imposta_Potenza | Windows supporta il comando Set_Power | Windows esegue questo comando nei seguenti scenari: quando il sistema passa a uno stato S3/standby connesso a basso consumo e quando il sistema viene arrestato. |