関数ドライバーは、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 ルーチン、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 |