Abrufen vordefinierter Daten
In diesem Artikel wird beschrieben, wie Benutzermodusanwendungen und Kernelmodustreiber die vordefinierten Daten einer HID-Auflistung abrufen, bei der es sich um eine undurchsichtige Struktur handelt, die die HID-Berichte einer Auflistung beschreibt.
Anwendung für den Benutzermodus
Eine Benutzermodusanwendung muss die vordefinierten Daten einer Sammlung abrufen, bevor eine der HIDClass-Supportroutinen aufgerufen wird, die die vordefinierten Daten erfordern. Eine Anwendung sollte den Zugriff auf die vordefinierten Daten einer Sammlung beibehalten, solange sie über eine geöffnete Datei auf dem Gerät verfügt.
Nach dem Öffnen einer Datei in einer HID-Auflistung ruft eine Anwendung HidD_GetPreparsedData auf, um die vorbereiteten Daten einer Auflistung in einem routinegeteilten Puffer zurückzugeben.
Anwendungen sollten HidD_FreePreparsedData aufrufen, wenn die Anwendung keinen Zugriff mehr auf eine Sammlung benötigt.
Kernelmodustreiber
Nachdem ein Kernelmodustreiber eine HID-Auflistung geöffnet hat, ruft der Treiber die vordefinierten Daten einer Sammlung wie folgt ab:
Ruft die Länge der vorbereiteten Daten der Auflistung ab.
Ruft die vordefinierten Daten der Auflistung ab.
Um die Länge der analysierten Daten zu ermitteln, verwendet der Treiber eine IOCTL_HID_GET_COLLECTION_INFORMATION Anforderung. Diese Anforderung gibt eine HID_COLLECTION_INFORMATION Struktur zurück. Das DescriptorSize-Element dieser Struktur gibt die Größe der vordefinierten Daten einer Auflistung in Bytes an. Der Treiber muss einen Puffer aus einem nicht ausgelagerten Pool mit mindestens dieser Größe zuweisen, um die vorbereiteten Daten zu enthalten.
Nach dem Zuordnen des Puffers für die vorbereiteten Daten verwendet der Treiber eine IOCTL_HID_GET_COLLECTION_DESCRIPTOR Anforderung, um die vorbereiteten Daten abzurufen.
Nach dem Abrufen der vorbereiteten Daten kann der Treiber es mit den **HidP_**Xxx HID-Supportroutinen verwenden, um Informationen über die Funktionen der HID-Sammlung abzurufen und Steuerdaten aus HID-Berichten zu extrahieren.