12 #define I8042PRT_TAG '2408' 60 #define WHEEL_DELTA 120 68 #define KEYBOARD_PRESENT 0x01 69 #define KEYBOARD_CONNECTED 0x02 70 #define KEYBOARD_STARTED 0x04 71 #define KEYBOARD_INITIALIZED 0x08 72 #define MOUSE_PRESENT 0x10 73 #define MOUSE_CONNECTED 0x20 74 #define MOUSE_STARTED 0x40 75 #define MOUSE_INITIALIZED 0x80 211 #define MAX(a, b) ((a) >= (b) ? (a) : (b)) 213 #define KEYBOARD_POWER_CODE 0x5E 214 #define KEYBOARD_SLEEP_CODE 0x5F 215 #define KEYBOARD_WAKE_CODE 0x63 221 #define KBD_READ_MODE 0x20 222 #define KBD_WRITE_MODE 0x60 223 #define MOUSE_ENAB 0xA8 224 #define MOUSE_LINE_TEST 0xA9 225 #define CTRL_SELF_TEST 0xAA 226 #define KBD_CLK_DISABLE 0xAD 227 #define KBD_CLK_ENABLE 0xAE 228 #define CTRL_WRITE_MOUSE 0xD4 234 #define KBD_CMD_SET_LEDS 0xED 235 #define KBD_CMD_GET_ID 0xF2 241 #define KBD_SELF_TEST_OK 0x55 243 #define KBD_NACK 0xFC 244 #define KBD_RESEND 0xFE 253 #define KBD_PERR 0x80 259 #define CCB_KBD_INT_ENAB 0x01 260 #define CCB_MOUSE_INT_ENAB 0x02 261 #define CCB_SYSTEM_FLAG 0x04 262 #define CCB_KBD_DISAB 0x10 263 #define CCB_MOUSE_DISAB 0x20 264 #define CCB_TRANSLATE 0x40 270 #define KBD_LED_SCROLL 0x01 271 #define KBD_LED_NUM 0x02 272 #define KBD_LED_CAPS 0x04 278 #define MOU_ENAB 0xF4 279 #define MOU_CMD_RESET 0xFF 285 #define MOUSE_ACK 0xFA 286 #define MOUSE_ERROR 0xFC 287 #define MOUSE_NACK 0xFE 405 #define i8042ReadKeyboardData(DeviceExtension, Data) \ 406 i8042ReadData(DeviceExtension, KBD_OBF, Data) 407 #define i8042ReadMouseData(DeviceExtension, Data) \ 408 i8042ReadData(DeviceExtension, MOU_OBF, Data) KEYBOARD_INDICATOR_PARAMETERS KeyboardIndicators
NTSTATUS i8042ReadData(IN PPORT_DEVICE_EXTENSION DeviceExtension, IN UCHAR StatusFlags, OUT PUCHAR Data)
NTSTATUS i8042ReadStatus(IN PPORT_DEVICE_EXTENSION DeviceExtension, OUT PUCHAR Status)
UNICODE_STRING PointerDeviceBaseName
struct _I8042_HOOK_WORKITEM I8042_HOOK_WORKITEM
struct _INTERRUPT_DATA * PINTERRUPT_DATA
PI8042_KEYBOARD_EXTENSION KeyboardExtension
struct _FDO_DEVICE_EXTENSION * PFDO_DEVICE_EXTENSION
enum _MOUSE_TIMEOUT_STATE MOUSE_TIMEOUT_STATE
I8042_MOUSE_TYPE MouseType
enum _I8042_DEVICE_TYPE * PI8042_DEVICE_TYPE
VOID i8042MouHandlePs2pp(IN PI8042_MOUSE_EXTENSION DeviceExtension, IN UCHAR Input)
PKINTERRUPT HighestDIRQLInterrupt
DRIVER_DISPATCH ForwardIrpAndForget
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
BOOLEAN i8042Write(IN PPORT_DEVICE_EXTENSION DeviceExtension, IN PUCHAR addr, IN UCHAR data)
BOOLEAN i8042IsrWritePort(IN PPORT_DEVICE_EXTENSION DeviceExtension, IN UCHAR Value, IN UCHAR SelectCmd OPTIONAL)
enum _MOUSE_STATE MOUSE_STATE
PDEVICE_OBJECT CurrentIrpDevice
VOID i8042Flush(IN PPORT_DEVICE_EXTENSION DeviceExtension)
DRIVER_DISPATCH i8042KbdDeviceControl
VOID i8042MouHandleButtons(IN PI8042_MOUSE_EXTENSION DeviceExtension, IN USHORT Mask)
PI8042_MOUSE_EXTENSION MouseExtension
ULONG OverrideKeyboardSubtype
ULONG OverrideKeyboardType
struct _I8042_DRIVER_EXTENSION I8042_DRIVER_EXTENSION
struct _I8042_KEYBOARD_EXTENSION * PI8042_KEYBOARD_EXTENSION
DRIVER_ADD_DEVICE i8042AddDevice
INTERRUPT_DATA KeyboardInterrupt
struct _FDO_DEVICE_EXTENSION FDO_DEVICE_EXTENSION
struct _I8042_DRIVER_EXTENSION * PI8042_DRIVER_EXTENSION
DRIVER_STARTIO i8042KbdStartIo
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
PKEYBOARD_INPUT_DATA KeyboardBuffer
PPORT_DEVICE_EXTENSION PortDeviceExtension
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
_Out_ _Inout_ POEM_STRING DestinationString
UNICODE_STRING PowerInterfaceName
enum _KINTERRUPT_MODE KINTERRUPT_MODE
ULONG KeyboardDataQueueSize
FDO_DEVICE_EXTENSION Common
MOUSE_TIMEOUT_STATE MouseTimeoutState
ULONG PollingIterationsMaximum
struct _PORT_DEVICE_EXTENSION PORT_DEVICE_EXTENSION
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
PIO_WORKITEM DebugWorkItem
NTSTATUS i8042MouInitialize(IN PI8042_MOUSE_EXTENSION DeviceExtension)
enum _MOUSE_RESET_SUBSTATE MOUSE_RESET_SUBSTATE
MOUSE_ATTRIBUTES MouseAttributes
_Must_inspect_result_ _In_ ULONG Flags
KEYBOARD_SCAN_STATE KeyboardScanState
INTERNAL_I8042_HOOK_KEYBOARD KeyboardHook
FDO_DEVICE_EXTENSION Common
NTSTATUS DuplicateUnicodeString(IN ULONG Flags, IN PCUNICODE_STRING SourceString, OUT PUNICODE_STRING DestinationString)
struct _I8042_MOUSE_EXTENSION I8042_MOUSE_EXTENSION
KEYBOARD_ATTRIBUTES KeyboardAttributes
DRIVER_DISPATCH ForwardIrpAndWait
NTSTATUS NTAPI i8042SynchWritePortKbd(IN PVOID Context, IN UCHAR Value, IN BOOLEAN WaitForAck)
PORT_DEVICE_EXTENSION Port
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
IO_WORKITEM_ROUTINE i8042SendHookWorkItem
INTERRUPT_DATA MouseInterrupt
struct _PORT_DEVICE_EXTENSION * PPORT_DEVICE_EXTENSION
GLenum const GLvoid * addr
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
enum _I8042_MOUSE_TYPE * PI8042_MOUSE_TYPE
INTERNAL_I8042_HOOK_MOUSE MouseHook
NTSTATUS NTAPI i8042SynchWritePort(IN PPORT_DEVICE_EXTENSION DeviceExtension, IN UCHAR Port, IN UCHAR Value, IN BOOLEAN WaitForAck)
CONNECT_DATA KeyboardData
enum _I8042_MOUSE_TYPE I8042_MOUSE_TYPE
DRIVER_DISPATCH(nfs41_FsdDispatch)
NTSTATUS NTAPI i8042SynchReadPort(IN PVOID Context, OUT PUCHAR Value, IN BOOLEAN WaitForAck)
UNICODE_STRING RegistryPath
struct _I8042_SETTINGS * PI8042_SETTINGS
BOOLEAN i8042PacketIsr(IN PPORT_DEVICE_EXTENSION DeviceExtension, IN UCHAR Output)
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
PMOUSE_INPUT_DATA MouseBuffer
_Dispatch_type_(IRP_MJ_CREATE) DRIVER_DISPATCH i8042Create
struct _I8042_KEYBOARD_EXTENSION I8042_KEYBOARD_EXTENSION
ULARGE_INTEGER MousePacketStartTime
enum _MOUSE_TIMEOUT_STATE * PMOUSE_TIMEOUT_STATE
enum _KEYBOARD_SCAN_STATE KEYBOARD_SCAN_STATE
enum _I8042_DEVICE_TYPE I8042_DEVICE_TYPE
NTSTATUS ReadRegistryEntries(IN PUNICODE_STRING RegistryPath, OUT PI8042_SETTINGS Settings)
UNICODE_STRING KeyboardDeviceBaseName
MOUSE_RESET_SUBSTATE MouseResetState
LIST_ENTRY DeviceListHead
BOOLEAN MouseTimeoutActive
ULONG PollStatusIterations
struct _I8042_HOOK_WORKITEM * PI8042_HOOK_WORKITEM
VOID NTAPI i8042InitializeHwHacks(VOID)
struct _I8042_SETTINGS I8042_SETTINGS
NTSTATUS i8042ReadDataWait(IN PPORT_DEVICE_EXTENSION DeviceExtension, OUT PUCHAR Data)
PDEVICE_OBJECT LowerDevice
DRIVER_DISPATCH i8042MouInternalDeviceControl
struct _INTERRUPT_DATA INTERRUPT_DATA
VOID i8042MouHandle(IN PI8042_MOUSE_EXTENSION DeviceExtension, IN UCHAR Output)
BOOLEAN i8042ChangeMode(IN PPORT_DEVICE_EXTENSION DeviceExtension, IN UCHAR FlagsToDisable, IN UCHAR FlagsToEnable)
KSERVICE_ROUTINE i8042KbdInterruptService
struct _I8042_MOUSE_EXTENSION * PI8042_MOUSE_EXTENSION
PIO_WORKITEM PowerWorkItem
DRIVER_DISPATCH i8042KbdInternalDeviceControl
KINTERRUPT_MODE InterruptMode
NTSTATUS i8042StartPacket(IN PPORT_DEVICE_EXTENSION DeviceExtension, IN PFDO_DEVICE_EXTENSION FdoDeviceExtension, IN PUCHAR Bytes, IN ULONG ByteCount, IN PIRP Irp)
KSPIN_LOCK DeviceListLock
KSERVICE_ROUTINE i8042MouInterruptService
PULONG MinorVersion OPTIONAL