The IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION request returns information about the mapping between scan codes and indicators.
Kbdclass copies the current stack location, sets the MajorFunction member of the new stack location to IRP_MJ_INTERNAL_DEVICE_CONTROL, and sends this request down the device stack.
The Parameters.DeviceIoControl.InputBufferLength member is set to zero or a value greater than or equal to the size, in bytes, of a KEYBOARD_UNIT_ID_PARAMETER. A value of zero specifies a default unit ID of zero.
The AssociatedIrp.SystemBuffer member points to a client-allocated buffer that is used to input and output information. On input, AssociatedIrp.SystemBuffer points to a KEYBOARD_UNIT_ID_PARAMETER structure. The client sets the UnitId member of the input structure.
The Parameters.DeviceIoControl.OutputBufferLength member specifies the size, in bytes, of a client-allocated output buffer, which must be greater than or equal to the size, in bytes, of a KEYBOARD_INDICATOR_TRANSLATION structure. (Note that this structure contains a device-specific array of members that map indicators to scan codes.)
Input Buffer Length
A value greater than or equal to the size of a KEYBOARD_INDICATOR_TRANSLATION structure.
AssociatedIrp.SystemBuffer points to a client-allocated buffer that the lower-level drivers use to output a KEYBOARD_INDICATOR_TRANSLATION structure.
Output Buffer Length
The size of a KEYBOARD_INDICATOR_TRANSLATION structure.
Input / Output Buffer
Input / Output Buffer Length
If the request is successful, the Information member is set to the number of bytes of translation data in the KEYBOARD_INDICATOR_TRANSLATION structure.
The Status member is set to one of the following values:
|Header||ntddkbd.h (include Ntddkbd.h)|