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