IOCTL_INTERNAL_I8042_HOOK_KEYBOARD control code
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
The initialization and ISR callbacks are optional and are provided by an upper-level filter driver for a PS/2-style keyboard device.
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
For more information about this request and the callbacks, see the following topics:
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.
The Parameters.DeviceIoControl.Type3InputBuffer points to an INTERNAL_I8042_HOOK_KEYBOARD structure. This structure includes the following members:
Pointer to an optional callback that the I8042prt keyboard initialization routine calls when it initializes a keyboard device.
Pointer to an optional callback that is called by the I8042prt keyboard ISR.
The Status member is set to one of the following values:
The request completed successfully.
Parameters.DeviceIoControl.InputBufferLength is less than the size, in bytes, of an INTERNAL_I8042_HOOK_KEYBOARD structure.