IOCTL_HID_GET_INDEXED_STRING IOCTL (hidclass.h)
Die IOCTL_HID_GET_INDEXED_STRING-Anforderung ruft eine angegebene eingebettete Zeichenfolge aus einer Auflistung auf oberster Ebeneab. Die abgerufene Zeichenfolge ist eine mit NULL beendete breite Zeichenfolge in einem lesbaren Format.
Allgemeine Informationen zu HIDClass-Geräten finden Sie unter HID Collections.
Hauptcode
Eingabepuffer
Parameters.DeviceIoControl.InputBufferLength in der I/O-Stapelposition des IRP gibt die Größe des Eingabepuffers an der Position an, auf die Irp->AssociatedIrp.SystemBufferverweist.
Parameters.DeviceIoControl.OutputBufferLength- an der I/O-Stapelposition des IRP gibt die Größe des Ausgabepuffers in Bytes an. Wenn der Ausgabepuffer nicht groß genug ist, um die gesamte eingebettete NULL-Zeichenfolge zu enthalten, gibt die Anforderung nichts im Ausgabepuffer zurück.
Minidriver-Verarbeitung: IOCTL_HID_GET_INDEXED_STRING verwendet zwei Eingabepuffer.
Parameters.DeviceIoControl.OutputBufferLength in der I/O-Stapelposition des IRP gibt die Größe des Ausgabepuffers an der Position an, auf die Irp->MdlAddressverweist. Wenn der Ausgabepuffer nicht groß genug ist, um die gesamte eingebettete NULL-Zeichenfolge zu enthalten, gibt die Anforderung nichts im Ausgabepuffer zurück. Die maximal mögliche Anzahl von Zeichen in einer eingebetteten Zeichenfolge ist gerätespezifisch. Bei USB-Geräten beträgt die maximale Zeichenfolgenlänge 126 breite Zeichen (nicht einschließlich des endenden NULL-Zeichens).
Parameters.DeviceIoControl.Type3InputBuffer enthält einen INT-Wert, der die abzurufende Zeichenfolge beschreibt. Die wichtigsten zwei Bytes des INT-Werts enthalten die Sprach-ID (z. B. ein Wert von 1033 gibt Englisch an). Die geringsten zwei Bytes des INT-Werts enthalten den Zeichenfolgenindex.
Eingabepufferlänge
Parameters.DeviceIoControl.InputBufferLength muss >= Sizeof(ULONG) sein und den Index der abzurufenden Zeichenfolge enthalten.
Für Parameters.DeviceIoControl.OutputBufferLengthist die maximal mögliche Anzahl von Zeichen in einer eingebetteten Zeichenfolge gerätespezifisch. Bei USB-Geräten beträgt die maximale Zeichenfolgenlänge 126 breite Zeichen (nicht einschließlich des endenden NULL-Zeichens).
Ausgabepuffer
Irp->MdlAddress verweist auf einen Puffer, um die abgerufene Zeichenfolge (eine NULL-beendete breite Zeichenfolge) zu empfangen.
minidriver handling: Irp->MdlAddress verweist auf einen Puffer, um die abgerufene Zeichenfolge (eine NULL-beendete breite Zeichenzeichenfolge) zu empfangen. Beachten Sie, dass im Gegensatz zu den meisten Gerätesteuerungs-IRPs für HID-Minidriver keine METHOD_NEITHER Pufferung verwendet. Insbesondere muss sie von IOCTL_HID_GET_STRING unterschieden werden, deren Ausgabepuffer durch Irp->UserBuffer-identifiziert wird.
Länge des Ausgabepuffers
Die Länge der abgerufenen Zeichenfolge (eine MIT NULL beendete breite Zeichenfolge). Der angegebene Puffer muss <= 4093 Bytes (2^12 – 3) sein.
Statusblock
Der HID-Klassentreiber legt die folgenden Felder von Irp->IoStatus-fest:
Information wird auf die Anzahl der vom Gerät übertragenen Bytes festgelegt.
Status wird auf STATUS_SUCCESS festgelegt, wenn die Übertragung ohne Fehler abgeschlossen wurde. Andernfalls wird er auf einen entsprechenden NTSTATUS-Fehlercode festgelegt.
Anforderungen
Anforderung | Wert |
---|---|
Header- | hidclass.h (include Hidclass.h) |