IOCTL_INTERNAL_I8042_HOOK_KEYBOARD IOCTL (ntdd8042.h)
Запрос IOCTL_INTERNAL_I8042_HOOK_KEYBOARD выполняет следующие действия.
- Добавляет подпрограмму обратного вызова инициализации инициализации клавиатуры I8042prt.
- Добавляет подпрограмму обратного вызова ISR в ISR клавиатуры I8042prt
После того как 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 структуры в байтах.
Выходной буфер
None
Длина выходного буфера
None
Блок состояния
Для элемента Status задано одно из следующих значений:
STATUS_INVALID_PARAMETER
Parameters.DeviceIoControl.InputBufferLength меньше размера структуры INTERNAL_I8042_HOOK_KEYBOARD в байтах.
STATUS_SUCCESS
Запрос успешно завершен.
Требования
Требование | Значение |
---|---|
Заголовок | ntdd8042.h (включая Ntdd8042.h) |