функция обратного вызова 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

Указатель на количество пакетов входных данных с клавиатуры, передаваемых подпрограммой.

Возвращаемое значение

None

Remarks

Обратный вызов службы классов клавиатуры

Ниже приведено определение процедуры обратного вызова службы класса клавиатуры.

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 может быть дополнен обратным вызовом службы фильтров, предоставляемым драйвером фильтра мыши верхнего уровня. Обратный вызов службы фильтрации может фильтровать данные мыши, передаваемые в очередь данных класса. Например, обратный вызов службы фильтров может удалять, преобразовывать или вставлять данные. Moufiltr, пример драйвера фильтра в WDK, включает MouFilter_ServiceCallback, который является шаблоном для обратного вызова службы фильтрации.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть kbdmou.h
IRQL DISPATCH_LEVEL

См. также раздел

CONNECT_DATA

KEYBOARD_INPUT_DATA

MOUSE_INPUT_DATA