9 #define MIN(a, b) ((a) < (b) ? (a) : (b))
11 #define CLASS_TAG 'CdbK'
12 #define DPFLTR_CLASS_NAME_ID DPFLTR_KBDCLASS_ID
23 typedef struct _CLASS_DRIVER_EXTENSION
25 UNICODE_STRING RegistryPath
;
27 /* Registry settings */
28 ULONG ConnectMultiplePorts
;
30 UNICODE_STRING DeviceBaseName
;
32 PDEVICE_OBJECT MainClassDeviceObject
;
33 } CLASS_DRIVER_EXTENSION
, *PCLASS_DRIVER_EXTENSION
;
35 typedef struct _COMMON_DEVICE_EXTENSION
38 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
40 typedef struct _PORT_DEVICE_EXTENSION
42 COMMON_DEVICE_EXTENSION Common
;
45 PDEVICE_OBJECT DeviceObject
;
46 PORT_DEVICE_STATE PnpState
;
47 PDEVICE_OBJECT LowerDevice
;
48 PDEVICE_OBJECT ClassDO
;
50 UNICODE_STRING InterfaceName
;
51 } PORT_DEVICE_EXTENSION
, *PPORT_DEVICE_EXTENSION
;
53 typedef struct _CLASS_DEVICE_EXTENSION
55 COMMON_DEVICE_EXTENSION Common
;
57 PCLASS_DRIVER_EXTENSION DriverExtension
;
60 KSPIN_LOCK ListSpinLock
;
64 PKEYBOARD_INPUT_DATA PortData
;
66 } CLASS_DEVICE_EXTENSION
, *PCLASS_DEVICE_EXTENSION
;
72 IN PDEVICE_OBJECT DeviceObject
,
75 DRIVER_DISPATCH ForwardIrpAndForget
;
78 DuplicateUnicodeString(
80 IN PCUNICODE_STRING SourceString
,
81 OUT PUNICODE_STRING DestinationString
);
83 #endif /* _KBDCLASS_PCH_ */