PSERVICE_CALLBACK_ROUTINE função de retorno de chamada (kbdmou.h)
Um driver de função chama o retorno de chamada do serviço de classe em sua rotina de conclusão de expedição do ISR. O retorno de chamada do serviço de classe transfere dados de entrada do buffer de dados de entrada de um dispositivo para a fila de dados de classe.
Sintaxe
PSERVICE_CALLBACK_ROUTINE PserviceCallbackRoutine;
void PserviceCallbackRoutine(
[in] PVOID NormalContext,
[in] PVOID SystemArgument1,
[in] PVOID SystemArgument2,
[in, out] PVOID SystemArgument3
)
{...}
Parâmetros
[in] NormalContext
Ponteiro para o objeto de dispositivo de classe.
[in] SystemArgument1
Ponteiro para o primeiro pacote de dados de entrada de teclado no buffer de dados de entrada do dispositivo de porta.
[in] SystemArgument2
Ponteiro para o pacote de dados de entrada do teclado que segue imediatamente o último pacote de dados no buffer de dados de entrada do dispositivo de porta.
[in, out] SystemArgument3
Ponteiro para o número de pacotes de dados de entrada de teclado transferidos pela rotina.
Retornar valor
Nenhum
Comentários
Retorno de chamada do Serviço de Classe de Teclado
Aqui está a definição da rotina de retorno de chamada do serviço de classe de teclado.
O Kbdclass usa uma solicitação IOCTL_INTERNAL_KEYBOARD_CONNECT para conectar seu retorno de chamada de serviço de classe a um dispositivo de teclado. Nessa chamada, o driver define sua implementação em uma estrutura 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 transfere dados de entrada do buffer de entrada do dispositivo para a fila de dados de classe. Essa rotina é chamada pela rotina de conclusão de expedição do ISR do driver de função.
KeyboardClassServiceCallback pode ser complementado por um retorno de chamada de serviço de filtro fornecido por um driver de filtro de teclado de nível superior. Um retorno de chamada do serviço de filtro filtra os dados de teclado transferidos para a fila de dados de classe. Por exemplo, o retorno de chamada do serviço de filtro pode excluir, transformar ou inserir dados. Kbfiltr, o driver de filtro de exemplo na galeria de códigos, inclui KbFilter_ServiceCallback, que é um modelo para um retorno de chamada do serviço de filtro de teclado.
Retorno de chamada do Serviço de Classe do Mouse
Aqui está a rotina MouseClassServiceCallback é a rotina de retorno de chamada do serviço de classe fornecida pelo Mouclass. O driver usa uma solicitação IOCTL_INTERNAL_MOUSE_CONNECT para conectar seu retorno de chamada de serviço de classe a um dispositivo do mouse. Nessa chamada, o driver define sua implementação em uma estrutura 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 transfere dados de entrada do buffer de entrada do dispositivo para a fila de dados de classe. Essa rotina é chamada pela rotina de conclusão de expedição do ISR do driver de função.
MouseClassServiceCallback pode ser complementado por um retorno de chamada de serviço de filtro fornecido por um driver de filtro de mouse de nível superior. Um retorno de chamada do serviço de filtro pode filtrar os dados do mouse transferidos para a fila de dados de classe. Por exemplo, o retorno de chamada do serviço de filtro pode excluir, transformar ou inserir dados. Moufiltr, o driver de filtro de exemplo no WDK, inclui MouFilter_ServiceCallback, que é um modelo para um retorno de chamada de serviço de filtro.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | kbdmou.h |
IRQL | DISPATCH_LEVEL |