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 例程是一種類別服務回呼例程,由該類別目錄提供。 驅動程式會使用 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 中的範例篩選驅動程式,包含 MouFilter_ServiceCallback,這是篩選服務回呼的範本。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | kbdmou.h |
IRQL | DISPATCH_LEVEL |