API (APPLICATION Programming Interface) HID
Esistono tre categorie di API HID:
- Individuazione e configurazione dei dispositivi
- Spostamento dei dati
- Creazione e interpretazione dei report
Individuazione e configurazione dei dispositivi
Queste API HID vengono usate per identificare le proprietà di un dispositivo HID e per stabilire la comunicazione con il dispositivo. Le applicazioni usano queste API per identificare una raccolta di livello superiore.
- HidD_GetAttributes
- HidD_GetHidGuid
- HidD_GetIndexedString
- HidD_GetManufacturerString
- HidD_GetPhysicalDescriptor
- HidD_GetPreparsedData
- HidD_GetProductString
- HidD_GetSerialNumberString
- HidD_GetNumInputBuffers
- HidD_SetNumInputBuffers
Spostamento dei dati
Le API HID seguenti vengono usate per spostare i dati tra un'applicazione e un dispositivo selezionato.
Creazione e interpretazione dei report
Gli sviluppatori di hardware personalizzato conoscono le dimensioni e il formato di ogni report rilasciato dal dispositivo. In questo caso, l'applicazione può eseguire il cast dei buffer di report di input e output come struct e utilizzare i dati.
Gli sviluppatori di applicazioni HID destinate a comunicare con tutti i dispositivi che espongono funzionalità comuni potrebbero non conoscere le dimensioni e il formato dei report HID. Questa categoria di applicazioni comprende alcune raccolte di livello superiore e determinati utilizzi.
Per interpretare i report ricevuti da un dispositivo o per creare report da inviare, l'applicazione deve usare il descrittore di report per determinare se e dove si trova un particolare utilizzo nei report e nelle unità di valori nei report. In questi casi, è necessaria l'analisi HID. Windows fornisce un parser HID da usare da driver e applicazioni tramite API (HidP_*) che possono essere usate per individuare i tipi di utilizzo supportati da un dispositivo, determinare lo stato di tali utilizzi in un report o creare un report per modificare lo stato di un utilizzo nel dispositivo.
Ecco l'elenco delle API del parser HID:
- HidP_GetButtonArray
- HidP_GetButtonCaps
- HidP_GetButtons
- HidP_GetButtonsEx
- HidP_GetCaps
- HidP_GetData
- HidP_GetExtendedAttributes
- HidP_GetLinkCollectionNodes
- HidP_GetScaledUsageValue
- HidP_GetSpecificButtonCaps
- HidP_GetSpecificValueCaps
- HidP_GetUsages
- HidP_GetUsagesEx
- HidP_GetUsageValue
- HidP_GetUsageValueArray
- HidP_GetValueCaps
- HidP_GetVersion
- HidP_InitializeReportForID
- HidP_MaxDataListLength
- HidP_MaxUsageListLength
- HidP_SetButtonArray
- HidP_SetButtons
- HidP_SetData
- HidP_SetScaledUsageValue
- HidP_SetUsages
- HidP_SetUsageValue
- HidP_SetUsageValueArray
- HidP_TranslateUsagesToI8042ScanCodes
- HidP_UnsetButtons
- HidP_UnsetUsages
- HidP_UsageAndPageListDifference
- HidP_UsageListDifference