The IOCTL_KEYBOARD_QUERY_ATTRIBUTES request returns information about the keyboard attributes.
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.
For more information about this request, see the description of this request in I8042prt Keyboard Internal Device Control Requests.
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 the output buffer, which must be greater than or equal to the size, in bytes, of a KEYBOARD_ATTRIBUTES structure.
AssociatedIrp.SystemBuffer points to a client-allocated buffer that the lower-level drivers use to output a KEYBOARD_ATTRIBUTES structure.
Output Buffer Length
The size of a KEYBOARD_ATTRIBUTES structure.
Input / Output Buffer
Input / Output Buffer Length
If the request is successful, the Information member is set to the size, in bytes, of a KEYBOARD_ATTRIBUTES structure, otherwise Information is set to zero.
The Status member is set to one of the following values:
|Header||ntddkbd.h (include Ntddkbd.h)|