3 #define _HIDPI_NO_FUNCTION_MACROS_
13 #define HIDCLASS_TAG 'CdiH'
17 PDRIVER_OBJECT DriverObject
;
18 ULONG DeviceExtensionSize
;
19 BOOLEAN DevicesArePolled
;
20 PDRIVER_DISPATCH MajorFunction
[IRP_MJ_MAXIMUM_FUNCTION
+ 1];
21 PDRIVER_ADD_DEVICE AddDevice
;
22 PDRIVER_UNLOAD DriverUnload
;
25 } HIDCLASS_DRIVER_EXTENSION
, *PHIDCLASS_DRIVER_EXTENSION
;
30 // hid device extension
32 HID_DEVICE_EXTENSION HidDeviceExtension
;
42 PHIDCLASS_DRIVER_EXTENSION DriverExtension
;
47 HIDP_DEVICE_DESC DeviceDescription
;
52 HID_DEVICE_ATTRIBUTES Attributes
;
54 } HIDCLASS_COMMON_DEVICE_EXTENSION
, *PHIDCLASS_COMMON_DEVICE_EXTENSION
;
59 // parts shared by fdo and pdo
61 HIDCLASS_COMMON_DEVICE_EXTENSION Common
;
64 // device capabilities
66 DEVICE_CAPABILITIES Capabilities
;
71 HID_DESCRIPTOR HidDescriptor
;
76 PUCHAR ReportDescriptor
;
81 PDEVICE_RELATIONS DeviceRelations
;
83 } HIDCLASS_FDO_EXTENSION
, *PHIDCLASS_FDO_EXTENSION
;
88 // parts shared by fdo and pdo
90 HIDCLASS_COMMON_DEVICE_EXTENSION Common
;
93 // device capabilities
95 DEVICE_CAPABILITIES Capabilities
;
100 ULONG CollectionNumber
;
105 UNICODE_STRING DeviceInterface
;
110 PDEVICE_OBJECT FDODeviceObject
;
113 // fdo device extension
115 PHIDCLASS_FDO_EXTENSION FDODeviceExtension
;
117 } HIDCLASS_PDO_DEVICE_EXTENSION
, *PHIDCLASS_PDO_DEVICE_EXTENSION
;
119 typedef struct __HIDCLASS_FILEOP_CONTEXT__
124 PHIDCLASS_PDO_DEVICE_EXTENSION DeviceExtension
;
132 // read irp pending list
134 LIST_ENTRY ReadPendingIrpListHead
;
137 // completed irp list
139 LIST_ENTRY IrpCompletedListHead
;
142 // stop in progress indicator
144 BOOLEAN StopInProgress
;
147 // read complete event
149 KEVENT IrpReadComplete
;
151 } HIDCLASS_FILEOP_CONTEXT
, *PHIDCLASS_FILEOP_CONTEXT
;
163 PHIDCLASS_FILEOP_CONTEXT FileOp
;
166 // buffer for reading report
168 PVOID InputReportBuffer
;
173 ULONG InputReportBufferLength
;
178 PIO_WORKITEM CompletionWorkItem
;
180 } HIDCLASS_IRP_CONTEXT
, *PHIDCLASS_IRP_CONTEXT
;
185 IN PDEVICE_OBJECT DeviceObject
,
189 HidClassFDO_DispatchRequest(
190 IN PDEVICE_OBJECT DeviceObject
,
194 HidClassFDO_DispatchRequestSynchronous(
195 IN PDEVICE_OBJECT DeviceObject
,
200 HidClassPDO_CreatePDO(
201 IN PDEVICE_OBJECT DeviceObject
,
202 OUT PDEVICE_RELATIONS
*OutDeviceRelations
);
206 IN PDEVICE_OBJECT DeviceObject
,
209 PHIDP_COLLECTION_DESC
210 HidClassPDO_GetCollectionDescription(
211 PHIDP_DEVICE_DESC DeviceDescription
,
212 ULONG CollectionNumber
);
215 HidClassPDO_GetReportDescription(
216 PHIDP_DEVICE_DESC DeviceDescription
,
217 ULONG CollectionNumber
);