6 #define MIN(a, b) ((a) < (b) ? (a) : (b))
8 #define CLASS_TAG 'CdbK'
9 #define DPFLTR_CLASS_NAME_ID DPFLTR_KBDCLASS_ID
20 typedef struct _CLASS_DRIVER_EXTENSION
22 UNICODE_STRING RegistryPath
;
24 /* Registry settings */
25 ULONG ConnectMultiplePorts
;
27 UNICODE_STRING DeviceBaseName
;
29 PDEVICE_OBJECT MainClassDeviceObject
;
30 } CLASS_DRIVER_EXTENSION
, *PCLASS_DRIVER_EXTENSION
;
32 typedef struct _COMMON_DEVICE_EXTENSION
35 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
37 typedef struct _PORT_DEVICE_EXTENSION
39 COMMON_DEVICE_EXTENSION Common
;
42 PDEVICE_OBJECT DeviceObject
;
43 PORT_DEVICE_STATE PnpState
;
44 PDEVICE_OBJECT LowerDevice
;
45 PDEVICE_OBJECT ClassDO
;
47 UNICODE_STRING InterfaceName
;
48 } PORT_DEVICE_EXTENSION
, *PPORT_DEVICE_EXTENSION
;
50 typedef struct _CLASS_DEVICE_EXTENSION
52 COMMON_DEVICE_EXTENSION Common
;
54 PCLASS_DRIVER_EXTENSION DriverExtension
;
57 KSPIN_LOCK ListSpinLock
;
61 PKEYBOARD_INPUT_DATA PortData
;
63 } CLASS_DEVICE_EXTENSION
, *PCLASS_DEVICE_EXTENSION
;
69 IN PDEVICE_OBJECT DeviceObject
,
72 DRIVER_DISPATCH ForwardIrpAndForget
;
75 DuplicateUnicodeString(
77 IN PCUNICODE_STRING SourceString
,
78 OUT PUNICODE_STRING DestinationString
);