PSERVICE_CALLBACK_ROUTINE回调函数 (kbdmou.h)
函数驱动程序在其 ISR 调度完成例程中调用类服务回调。 类服务回调将输入数据从设备的输入数据缓冲区传输到类数据队列。
语法
PSERVICE_CALLBACK_ROUTINE PserviceCallbackRoutine;
void PserviceCallbackRoutine(
[in] PVOID NormalContext,
[in] PVOID SystemArgument1,
[in] PVOID SystemArgument2,
[in, out] PVOID SystemArgument3
)
{...}
参数
[in] NormalContext
指向类设备对象的指针。
[in] SystemArgument1
指向端口设备的输入数据缓冲区中的第一个键盘输入数据包的指针。
[in] SystemArgument2
指向键盘输入数据包的指针,该数据包紧随端口设备的输入数据缓冲区中的最后一个数据包。
[in, out] SystemArgument3
指向例程传输的键盘输入数据包数的指针。
返回值
无
备注
键盘类服务回调
下面是键盘类服务回调例程的定义。
Kbdclass 使用 IOCTL_INTERNAL_KEYBOARD_CONNECT 请求将其类服务回调连接到键盘设备。 在此调用中,驱动程序在 CONNECT_DATA 结构中设置其实现。
/*
DeviceObject [in]
Pointer to the class device object.
InputDataStart [in]
Pointer to the first keyboard input data packet in the input data buffer of the port device.
InputDataEnd [in]
Pointer to the keyboard input data packet that immediately follows the last data packet in the input data buffer of the port device.
InputDataConsumed [in, out]
Pointer to the number of keyboard input data packets that are transferred by the routine.
*/
VOID KeyboardClassServiceCallback(
_In_ PDEVICE_OBJECT DeviceObject,
_In_ PKEYBOARD_INPUT_DATA InputDataStart,
_In_ PKEYBOARD_INPUT_DATA InputDataEnd,
_Inout_ PULONG InputDataConsumed
);
KeyboardClassServiceCallback 将输入数据从设备的输入缓冲区传输到类数据队列。 此例程由函数驱动程序的 ISR 调度完成例程调用。
KeyboardClassServiceCallback 可以通过上层键盘筛选器驱动程序提供的筛选器服务回调进行补充。 筛选器服务回调筛选传输到类数据队列的键盘数据。 例如,筛选器服务回调可以删除、转换或插入数据。 Kbfiltr 是代码库中的示例筛选器驱动程序,包含 KbFilter_ServiceCallback,它是用于键盘筛选器服务回调的模板。
鼠标类服务回调
下面是 MouseClassServiceCallback 例程是 Mouclass 提供的类服务回调例程。 驱动程序使用 IOCTL_INTERNAL_MOUSE_CONNECT 请求将其类服务回调连接到鼠标设备。 在此调用中,驱动程序在 CONNECT_DATA 结构中设置其实现。
/*
DeviceObject [in]
Pointer to the class device object.
InputDataStart [in]
Pointer to the first mouse input data packet in the input buffer of the port device.
InputDataEnd [in]
Pointer to the mouse input data packet that immediately follows the last data packet in the input data buffer of the port device.
InputDataConsumed [in, out]
Pointer to the number of mouse input data packets that are transferred by the routine.
*/
VOID MouseClassServiceCallback(
_In_ PDEVICE_OBJECT DeviceObject,
_In_ PMOUSE_INPUT_DATA InputDataStart,
_In_ PMOUSE_INPUT_DATA InputDataEnd,
_Inout_ PULONG InputDataConsumed
);
);
MouseClassServiceCallback 将输入数据从设备的输入缓冲区传输到类数据队列。 此例程由函数驱动程序的 ISR 调度完成例程调用。
MouseClassServiceCallback 可由上层鼠标筛选器驱动程序提供的筛选器服务回调进行补充。 筛选器服务回调可以筛选传输到类数据队列的鼠标数据。 例如,筛选器服务回调可以删除、转换或插入数据。 WDK 中的示例筛选器驱动程序 Moufiltr 包括MouFilter_ServiceCallback,这是筛选器服务回调的模板。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | kbdmou.h |
IRQL | DISPATCH_LEVEL |