Condividi tramite


IOCTL_HID_GET_INDEXED_STRING IOCTL (hidclass.h)

La richiesta di IOCTL_HID_GET_INDEXED_STRING ottiene una stringa incorporata specificata da una raccolta di primo livello. La stringa recuperata è una stringa di caratteri wide con terminazione NULL in un formato leggibile.

Per informazioni generali sui dispositivi HIDClass, vedere Raccolte HID.

Codice principale

IRP_MJ_DEVICE_CONTROL

Buffer di input

Parameters.DeviceIoControl.InputBufferLength nella posizione dello stack I/O di IRP indica le dimensioni in byte del buffer di input nella posizione a cui punta Irp-AssociatedIrp.SystemBuffer>.

Parameters.DeviceIoControl.OutputBufferLength nella posizione dello stack I/O di IRP indica le dimensioni, in byte, del buffer di output. Se il buffer di output non è sufficientemente grande da contenere l'intera stringa incorporata con terminazione NULL, la richiesta non restituisce nulla nel buffer di output.

Gestione del minidriver: IOCTL_HID_GET_INDEXED_STRING usa due buffer di input.

Parameters.DeviceIoControl.OutputBufferLength nella posizione dello stack I/O di IRP indica le dimensioni, in byte, del buffer di output nella posizione a cui punta Irp-MdlAddress>. Se il buffer di output non è sufficientemente grande da contenere l'intera stringa incorporata con terminazione NULL, la richiesta non restituisce nulla nel buffer di output. Il numero massimo possibile di caratteri in una stringa incorporata è specifico del dispositivo. Per i dispositivi USB, la lunghezza massima della stringa è di 126 caratteri wide (non incluso il carattere NULL di terminazione).

Parameters.DeviceIoControl.Type3InputBuffer contiene un valore INT che descrive la stringa da recuperare. I due byte più significativi del valore INT contengono l'ID lingua(ad esempio, un valore pari a 1033 indica l'inglese). I due byte meno significativi del valore INT contengono l'indice stringa.

Lunghezza del buffer di input

Parameters.DeviceIoControl.InputBufferLength deve essere >= sizeof(ULONG) e deve contenere l'indice della stringa da recuperare.

Per Parameters.DeviceIoControl.OutputBufferLength, il numero massimo possibile di caratteri in una stringa incorporata è specifico del dispositivo. Per i dispositivi USB, la lunghezza massima della stringa è di 126 caratteri wide (non incluso il carattere NULL di terminazione).

Buffer di output

Irp->MdlAddress punta a un buffer per ricevere la stringa recuperata (stringa di caratteri wide con terminazione NULL).

Gestione del minidriver: Irp-MdlAddress> punta a un buffer per ricevere la stringa recuperata (stringa di caratteri wide con terminazione NULL). Si noti che, a differenza della maggior parte dei IRP di controllo del dispositivo per i minidriver HID, questo IRP non usa METHOD_NEITHER buffering. In particolare, deve essere distinto da IOCTL_HID_GET_STRING il cui buffer di output è identificato da Irp-UserBuffer>.

Lunghezza del buffer di output

Lunghezza della stringa recuperata (stringa di caratteri wide con terminazione NULL). Il buffer fornito deve essere <= 4093 byte (2^12 - 3).

Blocco dello stato

Il driver di classe HID imposta i campi seguenti di Irp-IoStatus>:

  • Le informazioni vengono impostate sul numero di byte trasferiti dal dispositivo.

  • Lo stato è impostato su STATUS_SUCCESS se il trasferimento è stato completato senza errori. In caso contrario, viene impostato su un codice di errore NTSTATUS appropriato.

Requisiti

Requisito Valore
Intestazione hidclass.h (include Hidclass.h)

Vedi anche

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