IOCTL_INTERNAL_I8042_HOOK_KEYBOARD IOCTL (ntdd8042.h)
La requête 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 que I8042prt reçoit une demande de IOCTL_INTERNAL_KEYBOARD_CONNECT, il envoie une requête de IOCTL_INTERNAL_I8042_HOOK_KEYBOARD synchrone en haut de la pile de l’appareil clavier.
Une fois que Kbfiltr reçoit la demande de clavier de hook, Kbfiltr filtre la requête de la manière suivante :
- Enregistre les informations de niveau supérieur passées à 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 leur propre
- Enregistre le contexte du rappel I8042prt et des pointeurs vers des rappels que le rappel Kbfiltr ISR peut utiliser
Code principal
IRP_MJ_INTERNAL_DEVICE_CONTROL
Mémoire tampon d’entrée
Le 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
Aucun
Longueur de la mémoire tampon de sortie
Aucun
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.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | ntdd8042.h (include Ntdd8042.h) |