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
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 Length
The Status member is set to one of the following values:
|Header||ntdd8042.h (include Ntdd8042.h)|