Compartir a través de


IOCTL_HID_GET_INDEXED_STRING IOCTL (hidclass.h)

La solicitud IOCTL_HID_GET_INDEXED_STRING obtiene una cadena incrustada especificada de una colección de nivel superior. La cadena recuperada es una cadena de caracteres anchos terminada en NULL en un formato legible.

Para obtener información general sobre los dispositivos HIDClass, consulte Colecciones HID.

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada

Parameters.DeviceIoControl.InputBufferLength en la ubicación de la pila de E/S del IRP indica el tamaño en bytes del búfer de entrada en la ubicación a la que apunta Irp-AssociatedIrp.SystemBuffer>.

Parameters.DeviceIoControl.OutputBufferLength en la ubicación de la pila de E/S del IRP indica el tamaño, en bytes, del búfer de salida. Si el búfer de salida no es lo suficientemente grande como para contener toda la cadena insertada terminada en NULL, la solicitud no devuelve nada en el búfer de salida.

Control de minidriver: IOCTL_HID_GET_INDEXED_STRING usa dos búferes de entrada.

Parameters.DeviceIoControl.OutputBufferLength en la ubicación de la pila de E/S del IRP indica el tamaño, en bytes, del búfer de salida en la ubicación a la que apunta Irp-MdlAddress>. Si el búfer de salida no es lo suficientemente grande como para contener toda la cadena insertada terminada en NULL, la solicitud no devuelve nada en el búfer de salida. El número máximo posible de caracteres en una cadena incrustada es específico del dispositivo. En el caso de los dispositivos USB, la longitud máxima de la cadena es de 126 caracteres anchos (sin incluir el carácter NULL de terminación).

Parameters.DeviceIoControl.Type3InputBuffer contiene un valor INT que describe la cadena que se va a recuperar. Los dos bytes más significativos del valor INT contienen el identificador de idioma (por ejemplo, un valor de 1033 indica inglés). Los dos bytes menos significativos del valor INT contienen el índice de cadena.

Longitud del búfer de entrada

Parameters.DeviceIoControl.InputBufferLength debe ser >= sizeof(ULONG) y debe contener el índice de la cadena que se va a recuperar.

Para Parameters.DeviceIoControl.OutputBufferLength, el número máximo posible de caracteres en una cadena incrustada es específico del dispositivo. En el caso de los dispositivos USB, la longitud máxima de la cadena es de 126 caracteres anchos (sin incluir el carácter NULL de terminación).

Búfer de salida

Irp->MdlAddress apunta a un búfer para recibir la cadena recuperada (una cadena de caracteres anchos terminada en NULL).

Control de minidriver: Irp-MdlAddress> apunta a un búfer para recibir la cadena recuperada (una cadena de caracteres anchos terminada en NULL). Tenga en cuenta que, a diferencia de la mayoría de los IRP de control de dispositivos para minidrivers HID, este IRP no usa METHOD_NEITHER almacenamiento en búfer. En concreto, debe distinguirse de IOCTL_HID_GET_STRING cuyo búfer de salida se identifica mediante Irp-UserBuffer>.

Longitud del búfer de salida

Longitud de la cadena recuperada (una cadena de caracteres anchos terminada en NULL). El búfer proporcionado debe ser <= 4093 bytes (2^12 – 3).

Bloque de estado

El controlador de clase HID establece los siguientes campos de Irp-IoStatus>:

  • La información se establece en el número de bytes transferidos desde el dispositivo.

  • El estado se establece en STATUS_SUCCESS si la transferencia se completó sin error. De lo contrario, se establece en un código de error NTSTATUS adecuado.

Requisitos

Requisito Valor
Header hidclass.h (include Hidclass.h)

Consulte también

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