IOCTL_INTERNAL_I8042_HOOK_KEYBOARD IOCTL (ntdd8042.h)
The IOCTL_INTERNAL_I8042_HOOK_KEYBOARD request does the following:
- Adds an initialization callback routine to the I8042prt keyboard initialization routine
- Adds an ISR callback routine to the I8042prt keyboard ISR
After I8042prt receives an IOCTL_INTERNAL_KEYBOARD_CONNECT request, it sends a synchronous IOCTL_INTERNAL_I8042_HOOK_KEYBOARD request to the top of the keyboard device stack.
After Kbfiltr receives the hook keyboard request, Kbfiltr filters the request in the following way:
- Saves the upper-level information passed to Kbfiltr, which includes the context of an upper-level device object, a pointer to an initialization callback, and a pointer to an ISR callback
- Replaces the upper-level information with its own
- Saves the context of I8042prt and pointers to callbacks that the Kbfiltr ISR callback can use
Major code
IRP_MJ_INTERNAL_DEVICE_CONTROL
Input buffer
The Parameters.DeviceIoControl.Type3InputBuffer points to an INTERNAL_I8042_HOOK_KEYBOARD structure. This structure includes the following members:
Input buffer length
The Parameters.DeviceIoControl.InputBufferLength member is set to a value that is greater than or equal to the size, in bytes, of an INTERNAL_I8042_HOOK_KEYBOARD structure.
Output buffer
None
Output buffer length
None
Status block
The Status member is set to one of the following values:
STATUS_INVALID_PARAMETER
Parameters.DeviceIoControl.InputBufferLength is less than the size, in bytes, of an INTERNAL_I8042_HOOK_KEYBOARD structure.
STATUS_SUCCESS
The request completed successfully.
Requirements
Requirement | Value |
---|---|
Header | ntdd8042.h (include Ntdd8042.h) |