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

另请参阅

CONNECT_DATA

KEYBOARD_INPUT_DATA

MOUSE_INPUT_DATA