Partager via


IOCTL_HID_GET_INDEXED_STRING IOCTL (hidclass.h)

La requête IOCTL_HID_GET_INDEXED_STRING obtient une chaîne incorporée spécifiée à partir d’une collection de niveau supérieur. La chaîne récupérée est une chaîne de caractères larges terminée par null dans un format lisible par l’utilisateur.

Pour plus d’informations générales sur les appareils HIDClass, consultez Collections HID.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d'entrée

Parameters.DeviceIoControl.InputBufferLength dans l’emplacement de la pile d’E/S de l’IRP indique la taille en octets de la mémoire tampon d’entrée à l’emplacement pointé par Irp-AssociatedIrp.SystemBuffer>.

Parameters.DeviceIoControl.OutputBufferLength dans l’emplacement de la pile d’E/S de l’IRP indique la taille, en octets, de la mémoire tampon de sortie. Si la mémoire tampon de sortie n’est pas assez grande pour contenir l’intégralité de la chaîne incorporée terminée par NULL, la demande ne retourne rien dans la mémoire tampon de sortie.

Gestion du minidriver : IOCTL_HID_GET_INDEXED_STRING utilise deux mémoires tampons d’entrée.

Parameters.DeviceIoControl.OutputBufferLength dans l’emplacement de la pile d’E/S de l’IRP indique la taille, en octets, de la mémoire tampon de sortie à l’emplacement pointé par Irp-MdlAddress>. Si la mémoire tampon de sortie n’est pas assez grande pour contenir l’intégralité de la chaîne incorporée terminée par NULL, la demande ne retourne rien dans la mémoire tampon de sortie. Le nombre maximal possible de caractères dans une chaîne incorporée est spécifique à l’appareil. Pour les périphériques USB, la longueur maximale de chaîne est de 126 caractères larges (sans le caractère NULL de fin).

Parameters.DeviceIoControl.Type3InputBuffer contient une valeur INT qui décrit la chaîne à récupérer. Les deux octets les plus significatifs de la valeur INT contiennent l’ID de langue (par exemple, la valeur 1033 indique l’anglais). Les deux octets les moins significatifs de la valeur INT contiennent l’index de chaîne.

Longueur de la mémoire tampon d’entrée

Parameters.DeviceIoControl.InputBufferLength doit être >= sizeof(ULONG) et il doit contenir l’index de la chaîne à récupérer.

Pour Parameters.DeviceIoControl.OutputBufferLength, le nombre maximal possible de caractères dans une chaîne incorporée est spécifique à l’appareil. Pour les périphériques USB, la longueur maximale de chaîne est de 126 caractères larges (sans le caractère NULL de fin).

Mémoire tampon de sortie

Irp->MdlAddress pointe vers une mémoire tampon pour recevoir la chaîne récupérée (chaîne de caractères larges terminée par NULL).

Gestion du minidriver : Irp-MdlAddress> pointe vers une mémoire tampon pour recevoir la chaîne récupérée (chaîne de caractères larges terminée par NULL). Notez que contrairement à la plupart des IRP de contrôle d’appareil pour les minidrivers HID, cet IRP n’utilise pas METHOD_NEITHER mise en mémoire tampon. En particulier, il doit être distingué de IOCTL_HID_GET_STRING dont la mémoire tampon de sortie est identifiée par Irp-UserBuffer>.

Longueur de la mémoire tampon de sortie

Longueur de la chaîne récupérée (chaîne de caractères larges terminée par NULL). La mémoire tampon fournie doit être <= 4 093 octets (2^12 – 3).

Bloc d’état

Le pilote de classe HID définit les champs suivants d’Irp-IoStatus> :

  • Les informations sont définies sur le nombre d’octets transférés à partir de l’appareil.

  • L’état est défini sur STATUS_SUCCESS si le transfert s’est terminé sans erreur. Sinon, il est défini sur un code d’erreur NTSTATUS approprié.

Configuration requise

Condition requise Valeur
En-tête hidclass.h (inclure Hidclass.h)

Voir aussi

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