Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113#ifndef _SERMOUSE_PCH_#define _SERMOUSE_PCH_
#include <ntddk.h>#include <ntddser.h>#include <kbdmou.h>
#define SERMOUSE_TAG 'uoMS'
typedef enum{ dsStopped, dsStarted, dsPaused, dsRemoved, dsSurpriseRemoved} SERMOUSE_DEVICE_STATE;
typedef enum{ mtNone, /* No Mouse */ mtMicrosoft, /* Microsoft Mouse with 2 buttons */ mtLogitech, /* Logitech Mouse with 3 buttons */ mtWheelZ /* Microsoft Wheel Mouse (aka Z Mouse) */} SERMOUSE_MOUSE_TYPE;
/* Size for packet buffer used in interrupt routine */#define PACKET_BUFFER_SIZE 4
/* Hardware byte mask for left button */#define LEFT_BUTTON_MASK 0x20/* Hardware to Microsoft specific code byte shift for left button */#define LEFT_BUTTON_SHIFT 5/* Hardware byte mask for right button */#define RIGHT_BUTTON_MASK 0x10/* Hardware to Microsoft specific code byte shift for right button */#define RIGHT_BUTTON_SHIFT 3/* Hardware byte mask for middle button */#define MIDDLE_BUTTON_MASK 0x20/* Hardware to Microsoft specific code byte shift for middle button */#define MIDDLE_BUTTON_SHIFT 3
/* Microsoft byte mask for left button */#define MOUSE_BUTTON_LEFT 0x01/* Microsoft byte mask for right button */#define MOUSE_BUTTON_RIGHT 0x02/* Microsoft byte mask for middle button */#define MOUSE_BUTTON_MIDDLE 0x04
typedef struct _SERMOUSE_DRIVER_EXTENSION{ USHORT NumberOfButtons;} SERMOUSE_DRIVER_EXTENSION, *PSERMOUSE_DRIVER_EXTENSION;
typedef struct _SERMOUSE_DEVICE_EXTENSION{ PDEVICE_OBJECT LowerDevice; SERMOUSE_DEVICE_STATE PnpState; SERMOUSE_MOUSE_TYPE MouseType; PSERMOUSE_DRIVER_EXTENSION DriverExtension;
HANDLE WorkerThreadHandle; KEVENT StopWorkerThreadEvent;
ULONG ActiveQueue; ULONG InputDataCount[2]; CONNECT_DATA ConnectData; MOUSE_INPUT_DATA MouseInputData[2]; UCHAR PacketBuffer[PACKET_BUFFER_SIZE]; ULONG PacketBufferPosition; ULONG PreviousButtons; MOUSE_ATTRIBUTES AttributesInformation;} SERMOUSE_DEVICE_EXTENSION, *PSERMOUSE_DEVICE_EXTENSION;
/************************************ createclose.c */
DRIVER_DISPATCH SermouseCreate;
DRIVER_DISPATCH SermouseClose;
DRIVER_DISPATCH SermouseCleanup;
/************************************ detect.c */
SERMOUSE_MOUSE_TYPESermouseDetectLegacyDevice( IN PDEVICE_OBJECT LowerDevice);
/************************************ fdo.c */
DRIVER_ADD_DEVICE SermouseAddDevice;
DRIVER_DISPATCH SermousePnp;
/************************************ internaldevctl.c */
DRIVER_DISPATCH SermouseInternalDeviceControl;
/************************************ misc.c */
NTSTATUS NTAPIForwardIrpAndForget( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
/************************************ readmouse.c */
VOID NTAPISermouseDeviceWorker( PVOID Context);
#endif /* _SERMOUSE_PCH_ */