5 #include <pseh/pseh2.h>
11 #define MIN(a, b) ((a) < (b) ? (a) : (b))
13 #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
14 #define CLASS_TAG TAG('M', 'o', 'u', 'C')
15 #define DPFLTR_CLASS_NAME_ID DPFLTR_MOUCLASS_ID
26 typedef struct _CLASS_DRIVER_EXTENSION
28 UNICODE_STRING RegistryPath
;
30 /* Registry settings */
31 ULONG ConnectMultiplePorts
;
33 UNICODE_STRING DeviceBaseName
;
35 PDEVICE_OBJECT MainClassDeviceObject
;
36 } CLASS_DRIVER_EXTENSION
, *PCLASS_DRIVER_EXTENSION
;
38 typedef struct _COMMON_DEVICE_EXTENSION
41 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
43 typedef struct _PORT_DEVICE_EXTENSION
45 COMMON_DEVICE_EXTENSION Common
;
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
;
55 typedef struct _CLASS_DEVICE_EXTENSION
57 COMMON_DEVICE_EXTENSION Common
;
59 PCLASS_DRIVER_EXTENSION DriverExtension
;
62 KSPIN_LOCK ListSpinLock
;
66 PMOUSE_INPUT_DATA PortData
;
68 } CLASS_DEVICE_EXTENSION
, *PCLASS_DEVICE_EXTENSION
;
74 IN PDEVICE_OBJECT DeviceObject
,
77 DRIVER_DISPATCH ForwardIrpAndForget
;
80 DuplicateUnicodeString(
82 IN PCUNICODE_STRING SourceString
,
83 OUT PUNICODE_STRING DestinationString
);