4 #define IOCTL_INTERNAL_I8042_HOOK_KEYBOARD CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
5 #define IOCTL_INTERNAL_I8042_HOOK_MOUSE CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
7 typedef enum _KEYBOARD_SCAN_STATE
{
11 } KEYBOARD_SCAN_STATE
, *PKEYBOARD_SCAN_STATE
;
15 (*PI8042_SYNCH_READ_PORT
) (
23 (*PI8042_SYNCH_WRITE_PORT
) (
29 typedef enum _TRANSMIT_STATE
{
34 typedef struct _OUTPUT_PACKET
{
39 } OUTPUT_PACKET
, *POUTPUT_PACKET
;
43 (*PI8042_KEYBOARD_INITIALIZATION_ROUTINE
) (
44 IN PVOID InitializationContext
,
45 IN PVOID SynchFuncContext
,
46 IN PI8042_SYNCH_READ_PORT ReadPort
,
47 IN PI8042_SYNCH_WRITE_PORT WritePort
,
48 OUT PBOOLEAN TurnTranslationOn
53 (*PI8042_KEYBOARD_ISR
) (
55 PKEYBOARD_INPUT_DATA CurrentInput
,
56 POUTPUT_PACKET CurrentOutput
,
59 PBOOLEAN ContinueProcessing
,
60 PKEYBOARD_SCAN_STATE ScanState
63 typedef struct _INTERNAL_I8042_HOOK_KEYBOARD
{
66 // Context variable for all callback routines
71 // Routine to call after the mouse is reset
73 PI8042_KEYBOARD_INITIALIZATION_ROUTINE InitializationRoutine
;
76 // Routine to call when a byte is received via the interrupt
78 PI8042_KEYBOARD_ISR IsrRoutine
;
83 //UNIMPLEMENTED PI8042_ISR_WRITE_PORT IsrWritePort;
86 // Queue the current packet (ie the one passed into the isr callback hook)
87 // to be reported to the class driver
89 //UNIMPLEMENTED PI8042_QUEUE_PACKET QueueKeyboardPacket;
92 // Context for IsrWritePort, QueueKeyboardPacket
94 //UNIMPLEMENTED PVOID CallContext;
96 } INTERNAL_I8042_HOOK_KEYBOARD
, *PINTERNAL_I8042_HOOK_KEYBOARD
;