3 #define _HIDPI_NO_FUNCTION_MACROS_
9 #define HIDCLASS_TAG 'CdiH'
13 PDRIVER_OBJECT DriverObject
;
14 ULONG DeviceExtensionSize
;
15 BOOLEAN DevicesArePolled
;
16 PDRIVER_DISPATCH MajorFunction
[IRP_MJ_MAXIMUM_FUNCTION
+ 1];
17 PDRIVER_ADD_DEVICE AddDevice
;
18 PDRIVER_UNLOAD DriverUnload
;
21 } HIDCLASS_DRIVER_EXTENSION
, *PHIDCLASS_DRIVER_EXTENSION
;
26 // hid device extension
28 HID_DEVICE_EXTENSION HidDeviceExtension
;
38 PHIDCLASS_DRIVER_EXTENSION DriverExtension
;
43 HIDP_DEVICE_DESC DeviceDescription
;
48 HID_DEVICE_ATTRIBUTES Attributes
;
50 } HIDCLASS_COMMON_DEVICE_EXTENSION
, *PHIDCLASS_COMMON_DEVICE_EXTENSION
;
55 // parts shared by fdo and pdo
57 HIDCLASS_COMMON_DEVICE_EXTENSION Common
;
60 // device capabilities
62 DEVICE_CAPABILITIES Capabilities
;
67 HID_DESCRIPTOR HidDescriptor
;
72 PUCHAR ReportDescriptor
;
77 PDEVICE_RELATIONS DeviceRelations
;
79 } HIDCLASS_FDO_EXTENSION
, *PHIDCLASS_FDO_EXTENSION
;
84 // parts shared by fdo and pdo
86 HIDCLASS_COMMON_DEVICE_EXTENSION Common
;
89 // device capabilities
91 DEVICE_CAPABILITIES Capabilities
;
96 ULONG CollectionNumber
;
101 UNICODE_STRING DeviceInterface
;
106 PDEVICE_OBJECT FDODeviceObject
;
109 // fdo device extension
111 PHIDCLASS_FDO_EXTENSION FDODeviceExtension
;
113 } HIDCLASS_PDO_DEVICE_EXTENSION
, *PHIDCLASS_PDO_DEVICE_EXTENSION
;
115 typedef struct __HIDCLASS_FILEOP_CONTEXT__
120 PHIDCLASS_PDO_DEVICE_EXTENSION DeviceExtension
;
128 // read irp pending list
130 LIST_ENTRY ReadPendingIrpListHead
;
133 // completed irp list
135 LIST_ENTRY IrpCompletedListHead
;
138 // stop in progress indicator
140 BOOLEAN StopInProgress
;
143 // read complete event
145 KEVENT IrpReadComplete
;
147 } HIDCLASS_FILEOP_CONTEXT
, *PHIDCLASS_FILEOP_CONTEXT
;
159 PHIDCLASS_FILEOP_CONTEXT FileOp
;
162 // buffer for reading report
164 PVOID InputReportBuffer
;
169 ULONG InputReportBufferLength
;
174 PIO_WORKITEM CompletionWorkItem
;
176 } HIDCLASS_IRP_CONTEXT
, *PHIDCLASS_IRP_CONTEXT
;
181 IN PDEVICE_OBJECT DeviceObject
,
185 HidClassFDO_DispatchRequest(
186 IN PDEVICE_OBJECT DeviceObject
,
190 HidClassFDO_DispatchRequestSynchronous(
191 IN PDEVICE_OBJECT DeviceObject
,
196 HidClassPDO_CreatePDO(
197 IN PDEVICE_OBJECT DeviceObject
,
198 OUT PDEVICE_RELATIONS
*OutDeviceRelations
);
202 IN PDEVICE_OBJECT DeviceObject
,
205 PHIDP_COLLECTION_DESC
206 HidClassPDO_GetCollectionDescription(
207 PHIDP_DEVICE_DESC DeviceDescription
,
208 ULONG CollectionNumber
);
211 HidClassPDO_GetReportDescription(
212 PHIDP_DEVICE_DESC DeviceDescription
,
213 ULONG CollectionNumber
);