Поделиться через


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

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