IOCTL_INTERNAL_I8042_HOOK_KEYBOARD IOCTL (ntdd8042.h)
La solicitud IOCTL_INTERNAL_I8042_HOOK_KEYBOARD hace lo siguiente:
- Agrega una rutina de devolución de llamada de inicialización a la rutina de inicialización del teclado I8042prt.
- Agrega una rutina de devolución de llamada ISR al ISR del teclado I8042prt.
Después de que I8042prt reciba una solicitud de IOCTL_INTERNAL_KEYBOARD_CONNECT , envía una solicitud de IOCTL_INTERNAL_I8042_HOOK_KEYBOARD sincrónica a la parte superior de la pila del dispositivo de teclado.
Después de que Kbfiltr reciba la solicitud de teclado de enlace, Kbfiltr filtra la solicitud de la siguiente manera:
- Guarda la información de nivel superior que se pasa a Kbfiltr, que incluye el contexto de un objeto de dispositivo de nivel superior, un puntero a una devolución de llamada de inicialización y un puntero a una devolución de llamada ISR.
- Reemplaza la información de nivel superior por su propia
- Guarda el contexto de I8042prt y punteros a devoluciones de llamada que la devolución de llamada kbfiltr ISR puede usar.
Código principal
IRP_MJ_INTERNAL_DEVICE_CONTROL
Búfer de entrada
Parameters.DeviceIoControl.Type3InputBuffer apunta a una estructura de INTERNAL_I8042_HOOK_KEYBOARD. Esta estructura incluye los siguientes miembros:
Longitud del búfer de entrada
El miembro Parameters.DeviceIoControl.InputBufferLength se establece en un valor mayor o igual que el tamaño, en bytes, de una estructura de INTERNAL_I8042_HOOK_KEYBOARD .
Búfer de salida
None
Longitud del búfer de salida
None
Bloque de estado
El miembro Status se establece en uno de los siguientes valores:
STATUS_INVALID_PARAMETER
Parameters.DeviceIoControl.InputBufferLength es menor que el tamaño, en bytes, de una estructura de INTERNAL_I8042_HOOK_KEYBOARD.
STATUS_SUCCESS
La solicitud se completó correctamente.
Requisitos
Requisito | Valor |
---|---|
Header | ntdd8042.h (incluya Ntdd8042.h) |