// Mouse definitions common to both mouse class and port drivers #define IO_MOUSE_INCREMENT 6 #define MOUSE_BUFFER_SIZE 32 #define IOCTL_INTERNAL_MOUSE_CONNECT CTL_CODE(FILE_DEVICE_MOUSE, 0x0080, METHOD_NEITHER, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_MOUSE_DISCONNECT CTL_CODE(FILE_DEVICE_MOUSE, 0x0100, METHOD_NEITHER, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_MOUSE_ENABLE CTL_CODE(FILE_DEVICE_MOUSE, 0x0200, METHOD_NEITHER, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_MOUSE_DISABLE CTL_CODE(FILE_DEVICE_MOUSE, 0x0400, METHOD_NEITHER, FILE_ANY_ACCESS) typedef struct _MOUSE_INPUT_DATA { USHORT UnitId; USHORT Flags; union { ULONG Buttons; struct { USHORT ButtonFlags; USHORT ButtonData; }; }; ULONG RawButtons; LONG LastX; LONG LastY; ULONG ExtraInformation; } MOUSE_INPUT_DATA, *PMOUSE_INPUT_DATA; typedef struct _CLASS_INFORMATION { PDEVICE_OBJECT DeviceObject; PVOID CallBack; } CLASS_INFORMATION, *PCLASS_INFORMATION; typedef struct _GDI_INFORMATION { PVOID CallBack; } GDI_INFORMATION, *PGDI_INFORMATION; typedef VOID (*PSERVICE_CALLBACK_ROUTINE) ( IN PVOID NormalContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2, IN OUT PVOID SystemArgument3 ); typedef VOID (*PGDI_SERVICE_CALLBACK_ROUTINE) ( IN PVOID SystemArgument1, IN ULONG SystemArgument2 );