IOCTL_INTERNAL_I8042_HOOK_KEYBOARD IOCTL (ntdd8042.h)
La demande IOCTL_INTERNAL_I8042_HOOK_KEYBOARD effectue les opérations suivantes :
- Ajoute une routine de rappel d’initialisation à la routine d’initialisation du clavier I8042prt
- Ajoute une routine de rappel ISR au clavier I8042prt ISR
Une fois qu’I8042prt a reçu une demande de IOCTL_INTERNAL_KEYBOARD_CONNECT , il envoie une requête de IOCTL_INTERNAL_I8042_HOOK_KEYBOARD synchrone en haut de la pile du clavier.
Une fois que Kbfiltr a reçu la demande de clavier de crochet, Kbfiltr filtre la requête de la manière suivante :
- Enregistre les informations de niveau supérieur transmises à Kbfiltr, qui incluent le contexte d’un objet d’appareil de niveau supérieur, un pointeur vers un rappel d’initialisation et un pointeur vers un rappel ISR
- Remplace les informations de niveau supérieur par leurs propres
- Enregistre le contexte de I8042prt et les pointeurs vers les rappels que le rappel Kbfiltr ISR peut utiliser
Code principal
IRP_MJ_INTERNAL_DEVICE_CONTROL
Mémoire tampon d'entrée
Parameters.DeviceIoControl.Type3InputBuffer pointe vers une structure INTERNAL_I8042_HOOK_KEYBOARD. Cette structure comprend les membres suivants :
Longueur de la mémoire tampon d’entrée
Le membre Parameters.DeviceIoControl.InputBufferLength est défini sur une valeur supérieure ou égale à la taille, en octets, d’une structure INTERNAL_I8042_HOOK_KEYBOARD .
Mémoire tampon de sortie
None
Longueur de la mémoire tampon de sortie
None
Bloc d’état
Le membre Status est défini sur l’une des valeurs suivantes :
STATUS_INVALID_PARAMETER
Parameters.DeviceIoControl.InputBufferLength est inférieur à la taille, en octets, d’une structure INTERNAL_I8042_HOOK_KEYBOARD.
STATUS_SUCCESS
La demande s’est terminée avec succès.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | ntdd8042.h (inclure Ntdd8042.h) |