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 ルーチンは、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 は、上位レベルのマウス フィルター ドライバーによって提供されるフィルター サービス コールバックによって補完できます。 フィルター サービス コールバックでは、クラス データ キューに転送されるマウス データをフィルター処理できます。 たとえば、フィルター サービス コールバックでは、データの削除、変換、挿入を行うことができます。 WDK のサンプル フィルター ドライバーである Moufiltr には、フィルター サービス コールバックのテンプレートであるMouFilter_ServiceCallbackが含まれています。

要件

要件
対象プラットフォーム デスクトップ
Header kbdmou.h
IRQL DISPATCH_LEVEL

こちらもご覧ください

CONNECT_DATA

KEYBOARD_INPUT_DATA

MOUSE_INPUT_DATA