IOCTL_HID_GET_INDEXED_STRING IOCTL (hidclass.h)
A solicitação IOCTL_HID_GET_INDEXED_STRING obtém uma cadeia de caracteres inserida especificada de uma coleção de nível superior. A cadeia de caracteres recuperada é uma cadeia de caracteres largos terminada em NULL em um formato legível por humanos.
Para obter informações gerais sobre dispositivos HIDClass, consulte Coleções HID.
Código principal
Buffer de entrada
Parameters.DeviceIoControl.InputBufferLength no local da pilha de E/S do IRP indica o tamanho em bytes do buffer de entrada no local apontado por Irp-AssociatedIrp.SystemBuffer>.
Parameters.DeviceIoControl.OutputBufferLength no local da pilha de E/S do IRP indica o tamanho, em bytes, do buffer de saída. Se o buffer de saída não for grande o suficiente para manter toda a cadeia de caracteres inserida terminada em NULL, a solicitação não retornará nada no buffer de saída.
Manipulação de minidriver: IOCTL_HID_GET_INDEXED_STRING usa dois buffers de entrada.
Parameters.DeviceIoControl.OutputBufferLength no local da pilha de E/S do IRP indica o tamanho, em bytes, do buffer de saída no local apontado por Irp-MdlAddress>. Se o buffer de saída não for grande o suficiente para manter toda a cadeia de caracteres inserida terminada em NULL, a solicitação não retornará nada no buffer de saída. O número máximo possível de caracteres em uma cadeia de caracteres inserida é específico do dispositivo. Para dispositivos USB, o comprimento máximo da cadeia de caracteres é de 126 caracteres largos (sem incluir o caractere NULL de terminação).
Parameters.DeviceIoControl.Type3InputBuffer contém um valor INT que descreve a cadeia de caracteres a ser recuperada. Os dois bytes mais significativos do valor INT contêm a ID do idioma (por exemplo, um valor de 1033 indica inglês). Os dois bytes menos significativos do valor INT contêm o índice de cadeia de caracteres.
Comprimento do buffer de entrada
Parameters.DeviceIoControl.InputBufferLength deve ser >= sizeof(ULONG) e deve conter o índice da cadeia de caracteres a ser recuperada.
Para Parameters.DeviceIoControl.OutputBufferLength, o número máximo possível de caracteres em uma cadeia de caracteres inserida é específico do dispositivo. Para dispositivos USB, o comprimento máximo da cadeia de caracteres é de 126 caracteres largos (sem incluir o caractere NULL de terminação).
Buffer de saída
Irp->MdlAddress aponta para um buffer para receber a cadeia de caracteres recuperada (uma cadeia de caracteres largos terminada em NULL).
Manipulação de minidriver: Irp-MdlAddress> aponta para um buffer para receber a cadeia de caracteres recuperada (uma cadeia de caracteres largos terminada em NULL). Observe que, ao contrário da maioria dos IRPs de controle de dispositivo para minidrivers HID, esse IRP não usa o buffer de METHOD_NEITHER. Em particular, ele deve ser diferenciado de IOCTL_HID_GET_STRING cujo buffer de saída é identificado por Irp-UserBuffer>.
Comprimento do buffer de saída
O comprimento da cadeia de caracteres recuperada (uma cadeia de caracteres largos terminada em NULL). O buffer fornecido deve ser <= 4093 bytes (2^12 – 3).
Bloco de status
O driver de classe HID define os seguintes campos de Irp-IoStatus>:
As informações são definidas como o número de bytes transferidos do dispositivo.
O status será definido como STATUS_SUCCESS se a transferência for concluída sem erro. Caso contrário, ele será definido como um código de erro NTSTATUS apropriado.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | hidclass.h (inclua Hidclass.h) |