5 #include <pseh/pseh2.h>
11 #define MIN(a, b) ((a) < (b) ? (a) : (b))
13 #define CLASS_TAG 'CuoM'
14 #define DPFLTR_CLASS_NAME_ID DPFLTR_MOUCLASS_ID
25 typedef struct _CLASS_DRIVER_EXTENSION
27 UNICODE_STRING RegistryPath
;
29 /* Registry settings */
30 ULONG ConnectMultiplePorts
;
32 UNICODE_STRING DeviceBaseName
;
34 PDEVICE_OBJECT MainClassDeviceObject
;
35 } CLASS_DRIVER_EXTENSION
, *PCLASS_DRIVER_EXTENSION
;
37 typedef struct _COMMON_DEVICE_EXTENSION
40 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
42 typedef struct _PORT_DEVICE_EXTENSION
44 COMMON_DEVICE_EXTENSION Common
;
47 PDEVICE_OBJECT DeviceObject
;
48 PORT_DEVICE_STATE PnpState
;
49 PDEVICE_OBJECT LowerDevice
;
50 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
);