update for HEAD-2003091401
[reactos.git] / include / ddk / ntddmou.h
1 /* Mouse definitions common to both mouse class and port drivers */
2
3 #define DD_MOUSE_DEVICE_NAME    "\\Device\\PointerClass"
4 #define DD_MOUSE_DEVICE_NAME_U  L"\\Device\\PointerClass"
5
6 #define IO_MOUSE_INCREMENT      6
7 #define MOUSE_BUFFER_SIZE       32
8
9 #define IOCTL_INTERNAL_MOUSE_CONNECT    CTL_CODE(FILE_DEVICE_MOUSE, 0x0080, METHOD_NEITHER, FILE_ANY_ACCESS)
10 #define IOCTL_INTERNAL_MOUSE_DISCONNECT CTL_CODE(FILE_DEVICE_MOUSE, 0x0100, METHOD_NEITHER, FILE_ANY_ACCESS)
11 #define IOCTL_INTERNAL_MOUSE_ENABLE     CTL_CODE(FILE_DEVICE_MOUSE, 0x0200, METHOD_NEITHER, FILE_ANY_ACCESS)
12 #define IOCTL_INTERNAL_MOUSE_DISABLE    CTL_CODE(FILE_DEVICE_MOUSE, 0x0400, METHOD_NEITHER, FILE_ANY_ACCESS)
13
14 #define IOCTL_MOUSE_QUERY_ATTRIBUTES    CTL_CODE(FILE_DEVICE_MOUSE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
15
16 #define MOUSE_BUTTON_1_DOWN  0x0001
17 #define MOUSE_BUTTON_1_UP    0x0002
18 #define MOUSE_BUTTON_2_DOWN  0x0004
19 #define MOUSE_BUTTON_2_UP    0x0008
20 #define MOUSE_BUTTON_3_DOWN  0x0010
21 #define MOUSE_BUTTON_3_UP    0x0020
22 #define MOUSE_BUTTON_4_DOWN  0x0040
23 #define MOUSE_BUTTON_4_UP    0x0080
24 #define MOUSE_BUTTON_5_DOWN  0x0100
25 #define MOUSE_BUTTON_5_UP    0x0200
26 #define MOUSE_WHEEL          0x0400
27
28 #define MOUSE_LEFT_BUTTON_DOWN    MOUSE_BUTTON_1_DOWN
29 #define MOUSE_LEFT_BUTTON_UP      MOUSE_BUTTON_1_UP
30 #define MOUSE_RIGHT_BUTTON_DOWN   MOUSE_BUTTON_2_DOWN
31 #define MOUSE_RIGHT_BUTTON_UP     MOUSE_BUTTON_2_UP
32 #define MOUSE_MIDDLE_BUTTON_DOWN  MOUSE_BUTTON_3_DOWN
33 #define MOUSE_MIDDLE_BUTTON_UP    MOUSE_BUTTON_3_UP
34
35 #define MOUSE_SERIAL_HARDWARE           0x0004
36 #define WHEELMOUSE_SERIAL_HARDWARE      0x0040
37
38 typedef struct _MOUSE_ATTRIBUTES {
39         USHORT MouseIdentifier;
40         USHORT NumberOfButtons;
41         USHORT SampleRate;
42         ULONG InputDataQueueLength;
43 } MOUSE_ATTRIBUTES, *PMOUSE_ATTRIBUTES;
44
45 /* Mouse input data structure */
46 typedef struct _MOUSE_INPUT_DATA {
47         USHORT UnitId;
48         USHORT Flags;
49         union {
50                 ULONG Buttons;
51                 struct  {
52                         USHORT  ButtonFlags;
53                         USHORT  ButtonData;
54                 };
55         };
56         ULONG RawButtons;
57         LONG LastX;
58         LONG LastY;
59         ULONG ExtraInformation;
60 } MOUSE_INPUT_DATA, *PMOUSE_INPUT_DATA;
61
62 typedef struct _CLASS_INFORMATION {
63    PDEVICE_OBJECT DeviceObject;
64    PVOID CallBack;
65 } CLASS_INFORMATION, *PCLASS_INFORMATION;
66
67 typedef struct _GDI_INFORMATION {
68    PVOID CallBack;
69 } GDI_INFORMATION, *PGDI_INFORMATION;
70
71 typedef
72 VOID
73 (*PSERVICE_CALLBACK_ROUTINE) (
74     IN PVOID NormalContext,
75     IN PVOID SystemArgument1,
76     IN PVOID SystemArgument2,
77     IN OUT PVOID SystemArgument3
78     );
79
80 typedef
81 VOID
82 (*PGDI_SERVICE_CALLBACK_ROUTINE) (
83     IN PVOID SystemArgument1,
84     IN ULONG SystemArgument2
85     );
86