IOCTL_INTERNAL_I8042_HOOK_KEYBOARD IOCTL (ntdd8042.h)
Запрос IOCTL_INTERNAL_I8042_HOOK_KEYBOARD выполняет следующие действия:
- Добавляет подпрограмму обратного вызова инициализации инициализации клавиатуры I8042prt
- Добавляет подпрограмму обратного вызова ISR на клавиатуру I8042prt
После получения запроса IOCTL_INTERNAL_KEYBOARD_CONNECT I8042prt он отправляет синхронный запрос IOCTL_INTERNAL_I8042_HOOK_KEYBOARD в верхней части стека устройства клавиатуры.
После того как Kbfiltr получит запрос клавиатуры перехватчика, Kbfiltr фильтрует запрос следующим образом:
- Сохраняет сведения верхнего уровня, передаваемые в Kbfiltr, которая включает контекст объекта устройства верхнего уровня, указатель на обратный вызов инициализации и указатель на обратный вызов ISR.
- Заменяет сведения верхнего уровня собственными
- Сохраняет контекст I8042prt и указателей на обратные вызовы, которые может использовать обратный вызов ISR Kbfiltr
Основной код
IRP_MJ_INTERNAL_DEVICE_CONTROL
Входной буфер
Parameters.DeviceIoControl.Type3InputBuffer указывает на структуру INTERNAL_I8042_HOOK_KEYBOARD. Эта структура включает следующие элементы:
Длина входного буфера
Элемент Parameters.DeviceIoControl.InputBufferLength имеет значение, которое больше или равно размеру структуры INTERNAL_I8042_HOOK_KEYBOARD.
Выходной буфер
Никакой
Длина выходного буфера
Никакой
Блок состояния
Элемент состояния имеет одно из следующих значений:
STATUS_INVALID_PARAMETER
Parameters.DeviceIoControl.InputBufferLength меньше размера в байтах структуры INTERNAL_I8042_HOOK_KEYBOARD.
STATUS_SUCCESS
Запрос успешно завершен.
Требования
Требование | Ценность |
---|---|
заголовка | ntdd8042.h (include Ntdd8042.h) |