IOCTL_INTERNAL_I8042_HOOK_KEYBOARD IOCTL (ntdd8042.h)
La richiesta di IOCTL_INTERNAL_I8042_HOOK_KEYBOARD esegue le operazioni seguenti:
- Aggiunge una routine di callback di inizializzazione alla routine di inizializzazione della tastiera I8042prt
- Aggiunge una routine di callback ISR alla tastiera I8042prt ISR
Dopo che I8042prt riceve una richiesta di IOCTL_INTERNAL_KEYBOARD_CONNECT, invia una richiesta sincrona IOCTL_INTERNAL_I8042_HOOK_KEYBOARD all'inizio dello stack di dispositivi da tastiera.
Dopo che Kbfiltr riceve la richiesta di tastiera hook, Kbfiltr filtra la richiesta nel modo seguente:
- Salva le informazioni di livello superiore passate a Kbfiltr, che include il contesto di un oggetto dispositivo di livello superiore, un puntatore a un callback di inizializzazione e un puntatore a un callback ISR
- Sostituisce le informazioni di livello superiore con le proprie
- Salva il contesto di I8042prt e puntatori ai callback che il callback ISR kbfiltr può usare
Codice principale
IRP_MJ_INTERNAL_DEVICE_CONTROL
Buffer di input
Il Parameters.DeviceIoControl.Type3InputBuffer punta a una struttura INTERNAL_I8042_HOOK_KEYBOARD. Questa struttura include i membri seguenti:
Lunghezza del buffer di input
Il membro Parameters.DeviceIoControl.InputBufferLength è impostato su un valore maggiore o uguale alle dimensioni, in byte, di una struttura INTERNAL_I8042_HOOK_KEYBOARD.
Buffer di output
Nessuno
Lunghezza del buffer di output
Nessuno
Blocco di stato
Il membro stato è impostato su uno dei valori seguenti:
STATUS_INVALID_PARAMETER
Parameters.DeviceIoControl.InputBufferLength è minore delle dimensioni, in byte, di una struttura di INTERNAL_I8042_HOOK_KEYBOARD.
STATUS_SUCCESS
La richiesta è stata completata correttamente.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | ntdd8042.h (include Ntdd8042.h) |