IOCTL_INTERNAL_KEYBOARD_CONNECT IOCTL (kbdmou.h)
IOCTL_INTERNAL_KEYBOARD_CONNECT请求将 Kbdclass 服务连接到键盘设备。 Kbdclass 在打开键盘设备之前,会将此请求发送到键盘设备堆栈。
在 Kbfiltr 收到键盘连接请求后,Kbfiltr 按以下方式筛选连接请求:
- 保存 Kbdclass CONNECT_DATA (Kbdclass) 结构的副本,该结构由 Kbdclass 传递给筛选器驱动程序
- 将自己的连接信息替换为类驱动程序连接信息
- 在设备堆栈中向下发送IOCTL_INTERNAL_KEYBOARD_CONNECT请求
Kbfiltr 为筛选器服务回调例程提供了一个模板,该例程可以补充 KeyboardClassServiceCallback(Kbdclass 类服务回调例程)的操作。 筛选器服务回调可以筛选从设备输入缓冲区传输到类数据队列的输入数据。
有关 Kbdclass 服务连接的详细信息,请参阅以下主题:
主要代码
IRP_MJ_INTERNAL_DEVICE_CONTROL
输入缓冲区
Parameters.DeviceIoControl.Type3InputBuffer 成员指向由 Kbdclass 分配和设置的 CONNECT_DATA 结构。
输入缓冲区长度
Parameters.DeviceIoControl.InputBufferLength 成员设置为大于或等于CONNECT_DATA结构的大小(以字节为单位)的值。
输出缓冲区
Parameters.DeviceIoControl.Type3InputBuffer 成员指向由 Kbfiltr 设置的CONNECT_DATA结构。
输出缓冲区长度
CONNECT_DATA结构的大小。
状态块
信息成员设置为零。
Status 成员设置为以下值之一:
STATUS_INVALID_PARAMETER
Parameters.DeviceIoControl.InputBufferLength 小于CONNECT_DATA结构的大小(以字节为单位)。
STATUS_SHARING_VIOLATION
kbfiltr 已连接 (筛选器驱动程序仅支持一个连接请求) 。
STATUS_SUCCESS
请求已成功完成。
要求
要求 | 值 |
---|---|
Header | kbdmou.h (包括 Kbdmou.h) |