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
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) |