IOCTL_INTERNAL_I8042_HOOK_KEYBOARD IOCTL (ntdd8042.h)
A solicitação IOCTL_INTERNAL_I8042_HOOK_KEYBOARD faz o seguinte:
- Adiciona uma rotina de retorno de chamada de inicialização à rotina de inicialização do teclado I8042prt
- Adiciona uma rotina de retorno de chamada ISR ao ISR do teclado I8042prt
Depois que o I8042prt recebe uma solicitação IOCTL_INTERNAL_KEYBOARD_CONNECT, ele envia uma solicitação de IOCTL_INTERNAL_I8042_HOOK_KEYBOARD síncrona para a parte superior da pilha de dispositivos de teclado.
Depois que kbfiltr recebe a solicitação de teclado gancho, Kbfiltr filtra a solicitação da seguinte maneira:
- Salva as informações de nível superior passadas para Kbfiltr, que inclui o contexto de um objeto de dispositivo de nível superior, um ponteiro para um retorno de chamada de inicialização e um ponteiro para um retorno de chamada ISR
- Substitui as informações de nível superior por suas próprias
- Salva o contexto de I8042prt e ponteiros para retornos de chamada que o retorno de chamada ISR do Kbfiltr pode usar
Código principal
IRP_MJ_INTERNAL_DEVICE_CONTROL
Buffer de entrada
O Parameters.DeviceIoControl.Type3InputBuffer aponta para uma estrutura de INTERNAL_I8042_HOOK_KEYBOARD. Essa estrutura inclui os seguintes membros:
Comprimento do buffer de entrada
O membro Parameters.DeviceIoControl.InputBufferLength é definido como um valor maior ou igual ao tamanho, em bytes, de uma estrutura INTERNAL_I8042_HOOK_KEYBOARD.
Buffer de saída
Nenhum
Comprimento do buffer de saída
Nenhum
Bloco de status
O membro status é definido como um dos seguintes valores:
STATUS_INVALID_PARAMETER
Parameters.DeviceIoControl.InputBufferLength é menor que o tamanho, em bytes, de uma estrutura INTERNAL_I8042_HOOK_KEYBOARD.
STATUS_SUCCESS
A solicitação foi concluída com êxito.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | ntdd8042.h (inclua Ntdd8042.h) |