IOCTL_INTERNAL_I8042_HOOK_KEYBOARD IOCTL (ntdd8042.h)
Die IOCTL_INTERNAL_I8042_HOOK_KEYBOARD-Anforderung führt Folgendes aus:
- Fügt der I8042prt-Tastaturinitialisierungsroutine eine Initialisierungsrückrufroutine hinzu.
- Fügt dem I8042prt-Tastatur-ISR eine ISR-Rückrufroutine hinzu
Nachdem I8042prt eine IOCTL_INTERNAL_KEYBOARD_CONNECT-Anforderung empfangen hat, sendet er eine synchrone IOCTL_INTERNAL_I8042_HOOK_KEYBOARD Anforderung an den oberen Rand des Tastaturgerätestapels.
Nachdem Kbfiltr die Hooktastataturanforderung empfangen hat, filtert Kbfiltr die Anforderung wie folgt:
- Speichert die an Kbfiltr übergebenen Informationen der oberen Ebene. Dies umfasst den Kontext eines Geräteobjekts der oberen Ebene, einen Zeiger auf einen Initialisierungsrückruf und einen Zeiger auf einen ISR-Rückruf.
- Ersetzt die Informationen der oberen Ebene durch ihre eigenen
- Speichert den Kontext von I8042prt und Zeigern auf Rückrufe, die der Kbfiltr ISR-Rückruf verwenden kann
Hauptcode
IRP_MJ_INTERNAL_DEVICE_CONTROL
Eingabepuffer
Parameters.DeviceIoControl.Type3InputBuffer verweist auf eine INTERNAL_I8042_HOOK_KEYBOARD-Struktur. Diese Struktur enthält die folgenden Member:
Eingabepufferlänge
Der Parameter.DeviceIoControl.InputBufferLength-Member ist auf einen Wert festgelegt, der größer als oder gleich der Größe einer INTERNAL_I8042_HOOK_KEYBOARD-Struktur in Bytes ist.
Ausgabepuffer
Keine
Länge des Ausgabepuffers
Keine
Statusblock
Der Statusmember ist auf einen der folgenden Werte festgelegt:
STATUS_INVALID_PARAMETER
Parameters.DeviceIoControl.InputBufferLength ist kleiner als die Größe einer INTERNAL_I8042_HOOK_KEYBOARD-Struktur in Bytes.
STATUS_SUCCESS
Die Anforderung wurde erfolgreich abgeschlossen.
Anforderungen
Anforderung | Wert |
---|---|
Header | ntdd8042.h (einschließen von Ntdd8042.h) |