IOCTL_INTERNAL_I8042_HOOK_KEYBOARD请求执行以下作:
- 将初始化回调例程添加到 I8042prt 键盘初始化例程
- 将 ISR 回调例程添加到 I8042prt 键盘 ISR
I8042prt 收到 IOCTL_INTERNAL_KEYBOARD_CONNECT 请求后,它会向键盘设备堆栈顶部发送同步IOCTL_INTERNAL_I8042_HOOK_KEYBOARD请求。
Kbfiltr 收到挂钩键盘请求后,Kbfiltr 将按以下方式筛选请求:
- 保存传递给 Kbfiltr 的上层信息,其中包括上层设备对象的上下文、指向初始化回调的指针以及指向 ISR 回调的指针
- 将上层信息替换为其自己的信息
- 保存 I8042prt 的上下文和指向 Kbfiltr ISR 回调可以使用的回调的指针
主要代码
IRP_MJ_INTERNAL_DEVICE_CONTROL
输入缓冲区
Parameters.DeviceIoControl.Type3InputBuffer 指向INTERNAL_I8042_HOOK_KEYBOARD结构。 此结构包括以下成员:
输入缓冲区长度
Parameters.DeviceIoControl.InputBufferLength 成员设置为大于或等于 INTERNAL_I8042_HOOK_KEYBOARD 结构的大小(以字节为单位)的值。
输出缓冲区
没有
输出缓冲区长度
没有
状态块
状态 成员设置为以下值之一:
STATUS_INVALID_PARAMETER
Parameters.DeviceIoControl.InputBufferLength 小于INTERNAL_I8042_HOOK_KEYBOARD结构的大小(以字节为单位)。
STATUS_SUCCESS
请求成功完成。
要求
要求 | 价值 |
---|---|
标头 | ntdd8042.h (包括 Ntdd8042.h) |