Reactos
at master 112 lines 2.8 kB view raw
1#ifndef _SERMOUSE_PCH_ 2#define _SERMOUSE_PCH_ 3 4#include <ntddk.h> 5#include <ntddser.h> 6#include <kbdmou.h> 7 8#define SERMOUSE_TAG 'uoMS' 9 10typedef enum 11{ 12 dsStopped, 13 dsStarted, 14 dsPaused, 15 dsRemoved, 16 dsSurpriseRemoved 17} SERMOUSE_DEVICE_STATE; 18 19typedef enum 20{ 21 mtNone, /* No Mouse */ 22 mtMicrosoft, /* Microsoft Mouse with 2 buttons */ 23 mtLogitech, /* Logitech Mouse with 3 buttons */ 24 mtWheelZ /* Microsoft Wheel Mouse (aka Z Mouse) */ 25} SERMOUSE_MOUSE_TYPE; 26 27/* Size for packet buffer used in interrupt routine */ 28#define PACKET_BUFFER_SIZE 4 29 30/* Hardware byte mask for left button */ 31#define LEFT_BUTTON_MASK 0x20 32/* Hardware to Microsoft specific code byte shift for left button */ 33#define LEFT_BUTTON_SHIFT 5 34/* Hardware byte mask for right button */ 35#define RIGHT_BUTTON_MASK 0x10 36/* Hardware to Microsoft specific code byte shift for right button */ 37#define RIGHT_BUTTON_SHIFT 3 38/* Hardware byte mask for middle button */ 39#define MIDDLE_BUTTON_MASK 0x20 40/* Hardware to Microsoft specific code byte shift for middle button */ 41#define MIDDLE_BUTTON_SHIFT 3 42 43/* Microsoft byte mask for left button */ 44#define MOUSE_BUTTON_LEFT 0x01 45/* Microsoft byte mask for right button */ 46#define MOUSE_BUTTON_RIGHT 0x02 47/* Microsoft byte mask for middle button */ 48#define MOUSE_BUTTON_MIDDLE 0x04 49 50typedef struct _SERMOUSE_DRIVER_EXTENSION 51{ 52 USHORT NumberOfButtons; 53} SERMOUSE_DRIVER_EXTENSION, *PSERMOUSE_DRIVER_EXTENSION; 54 55typedef struct _SERMOUSE_DEVICE_EXTENSION 56{ 57 PDEVICE_OBJECT LowerDevice; 58 SERMOUSE_DEVICE_STATE PnpState; 59 SERMOUSE_MOUSE_TYPE MouseType; 60 PSERMOUSE_DRIVER_EXTENSION DriverExtension; 61 62 HANDLE WorkerThreadHandle; 63 KEVENT StopWorkerThreadEvent; 64 65 ULONG ActiveQueue; 66 ULONG InputDataCount[2]; 67 CONNECT_DATA ConnectData; 68 MOUSE_INPUT_DATA MouseInputData[2]; 69 UCHAR PacketBuffer[PACKET_BUFFER_SIZE]; 70 ULONG PacketBufferPosition; 71 ULONG PreviousButtons; 72 MOUSE_ATTRIBUTES AttributesInformation; 73} SERMOUSE_DEVICE_EXTENSION, *PSERMOUSE_DEVICE_EXTENSION; 74 75/************************************ createclose.c */ 76 77DRIVER_DISPATCH SermouseCreate; 78 79DRIVER_DISPATCH SermouseClose; 80 81DRIVER_DISPATCH SermouseCleanup; 82 83/************************************ detect.c */ 84 85SERMOUSE_MOUSE_TYPE 86SermouseDetectLegacyDevice( 87 IN PDEVICE_OBJECT LowerDevice); 88 89/************************************ fdo.c */ 90 91DRIVER_ADD_DEVICE SermouseAddDevice; 92 93DRIVER_DISPATCH SermousePnp; 94 95/************************************ internaldevctl.c */ 96 97DRIVER_DISPATCH SermouseInternalDeviceControl; 98 99/************************************ misc.c */ 100 101NTSTATUS NTAPI 102ForwardIrpAndForget( 103 IN PDEVICE_OBJECT DeviceObject, 104 IN PIRP Irp); 105 106/************************************ readmouse.c */ 107 108VOID NTAPI 109SermouseDeviceWorker( 110 PVOID Context); 111 112#endif /* _SERMOUSE_PCH_ */