IOCTL_INTERNAL_I8042_HOOK_KEYBOARD IOCTL (ntdd8042.h)
IOCTL_INTERNAL_I8042_HOOK_KEYBOARD要求では、次の処理が行われます。
- I8042prt キーボード初期化ルーチンに初期化コールバック ルーチンを追加します
- I8042prt キーボード ISR に ISR コールバック ルーチンを追加します
I8042prt は 、IOCTL_INTERNAL_KEYBOARD_CONNECT 要求を受信すると、同期IOCTL_INTERNAL_I8042_HOOK_KEYBOARD要求をキーボード デバイス スタックの先頭に送信します。
Kbfiltr がフック キーボード要求を受け取った後、Kbfiltr は次のように要求をフィルター処理します。
- Kbfiltr に渡される上位レベルの情報を保存します。これには、上位レベルのデバイス オブジェクトのコンテキスト、初期化コールバックへのポインター、ISR コールバックへのポインターが含まれます。
- 上位レベルの情報を独自の情報に置き換えます。
- I8042prt のコンテキストと、Kbfiltr ISR コールバックで使用できるコールバックへのポインターを保存します
メジャー コード
IRP_MJ_INTERNAL_DEVICE_CONTROL
[入力バッファー]
Parameters.DeviceIoControl.Type3InputBuffer は、INTERNAL_I8042_HOOK_KEYBOARD構造体を指します。 この構造体には、次のメンバーが含まれます。
入力バッファーの長さ
Parameters.DeviceIoControl.InputBufferLength メンバーは、INTERNAL_I8042_HOOK_KEYBOARD構造体のサイズ (バイト単位) 以上の値に設定されます。
出力バッファー
なし
出力バッファーの長さ
なし
ステータス ブロック
Status メンバーは、次のいずれかの値に設定されます。
STATUS_INVALID_PARAMETER
Parameters.DeviceIoControl.InputBufferLength は、INTERNAL_I8042_HOOK_KEYBOARD構造体のサイズ (バイト単位) 未満です。
STATUS_SUCCESS
要求が正常に完了しました。
要件
要件 | 値 |
---|---|
Header | ntdd8042.h (Ntddd8042.h を含む) |