Freigeben über


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

IRP_MJ_DEVICE_CONTROL

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)

Siehe auch

HidD_GetIndexedString

HidD_GetManufacturerString

HidD_GetPhysicalDescriptor

HidD_GetProductString

HidD_GetSerialNumberString

IOCTL_HID_GET_MANUFACTURER_STRING

IOCTL_HID_GET_PRODUCT_STRING

IOCTL_HID_GET_SERIALNUMBER_STRING