some more win32k 64 bit fixes
[reactos.git] / reactos / drivers / input / mouclass / mouclass.h
1 #include <ntifs.h>
2 #include <kbdmou.h>
3 #include <ntddkbd.h>
4 #include <stdio.h>
5 #include <pseh/pseh.h>
6
7 #define NDEBUG
8 #include <debug.h>
9
10 #define MAX_PATH 260
11
12 #define MIN(a, b) ((a) < (b) ? (a) : (b))
13
14 #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
15 #define CLASS_TAG TAG('M', 'o', 'u', 'C')
16
17 typedef enum
18 {
19 dsStopped,
20 dsStarted,
21 dsPaused,
22 dsRemoved,
23 dsSurpriseRemoved
24 } PORT_DEVICE_STATE;
25
26 typedef struct _CLASS_DRIVER_EXTENSION
27 {
28 UNICODE_STRING RegistryPath;
29
30 /* Registry settings */
31 ULONG ConnectMultiplePorts;
32 ULONG DataQueueSize;
33 UNICODE_STRING DeviceBaseName;
34
35 PDEVICE_OBJECT MainClassDeviceObject;
36 } CLASS_DRIVER_EXTENSION, *PCLASS_DRIVER_EXTENSION;
37
38 typedef struct _COMMON_DEVICE_EXTENSION
39 {
40 BOOLEAN IsClassDO;
41 } COMMON_DEVICE_EXTENSION, *PCOMMON_DEVICE_EXTENSION;
42
43 typedef struct _PORT_DEVICE_EXTENSION
44 {
45 COMMON_DEVICE_EXTENSION Common;
46
47 LIST_ENTRY ListEntry;
48 PDEVICE_OBJECT DeviceObject;
49 PORT_DEVICE_STATE PnpState;
50 PDEVICE_OBJECT LowerDevice;
51 PDEVICE_OBJECT ClassDO;
52 UNICODE_STRING InterfaceName;
53 } PORT_DEVICE_EXTENSION, *PPORT_DEVICE_EXTENSION;
54
55 typedef struct _CLASS_DEVICE_EXTENSION
56 {
57 COMMON_DEVICE_EXTENSION Common;
58
59 PCLASS_DRIVER_EXTENSION DriverExtension;
60
61 LIST_ENTRY ListHead;
62 KSPIN_LOCK ListSpinLock;
63 KSPIN_LOCK SpinLock;
64 PIRP PendingIrp;
65 SIZE_T InputCount;
66 PMOUSE_INPUT_DATA PortData;
67 LPCWSTR DeviceName;
68 } CLASS_DEVICE_EXTENSION, *PCLASS_DEVICE_EXTENSION;
69
70 /* misc.c */
71
72 NTSTATUS
73 ForwardIrpAndWait(
74 IN PDEVICE_OBJECT DeviceObject,
75 IN PIRP Irp);
76
77 DRIVER_DISPATCH ForwardIrpAndForget;
78
79 NTSTATUS
80 DuplicateUnicodeString(
81 IN ULONG Flags,
82 IN PCUNICODE_STRING SourceString,
83 OUT PUNICODE_STRING DestinationString);