3 #define _HIDPI_NO_FUNCTION_MACROS_
15 PDRIVER_OBJECT DriverObject
;
16 ULONG DeviceExtensionSize
;
17 BOOLEAN DevicesArePolled
;
18 PDRIVER_DISPATCH MajorFunction
[IRP_MJ_MAXIMUM_FUNCTION
+ 1];
19 PDRIVER_ADD_DEVICE AddDevice
;
20 PDRIVER_UNLOAD DriverUnload
;
23 }HIDCLASS_DRIVER_EXTENSION
, *PHIDCLASS_DRIVER_EXTENSION
;
28 // hid device extension
30 HID_DEVICE_EXTENSION HidDeviceExtension
;
40 PHIDCLASS_DRIVER_EXTENSION DriverExtension
;
45 HIDP_DEVICE_DESC DeviceDescription
;
50 HID_DEVICE_ATTRIBUTES Attributes
;
52 }HIDCLASS_COMMON_DEVICE_EXTENSION
, *PHIDCLASS_COMMON_DEVICE_EXTENSION
;
57 // parts shared by fdo and pdo
59 HIDCLASS_COMMON_DEVICE_EXTENSION Common
;
62 // device capabilities
64 DEVICE_CAPABILITIES Capabilities
;
69 HID_DESCRIPTOR HidDescriptor
;
74 PUCHAR ReportDescriptor
;
79 PDEVICE_RELATIONS DeviceRelations
;
81 }HIDCLASS_FDO_EXTENSION
, *PHIDCLASS_FDO_EXTENSION
;
86 // parts shared by fdo and pdo
88 HIDCLASS_COMMON_DEVICE_EXTENSION Common
;
91 // device capabilities
93 DEVICE_CAPABILITIES Capabilities
;
98 ULONG CollectionNumber
;
103 UNICODE_STRING DeviceInterface
;
108 PDEVICE_OBJECT FDODeviceObject
;
111 // fdo device extension
113 PHIDCLASS_FDO_EXTENSION FDODeviceExtension
;
115 }HIDCLASS_PDO_DEVICE_EXTENSION
, *PHIDCLASS_PDO_DEVICE_EXTENSION
;
117 typedef struct __HIDCLASS_FILEOP_CONTEXT__
122 PHIDCLASS_PDO_DEVICE_EXTENSION DeviceExtension
;
130 // read irp pending list
132 LIST_ENTRY ReadPendingIrpListHead
;
135 // completed irp list
137 LIST_ENTRY IrpCompletedListHead
;
140 // stop in progress indicator
142 BOOLEAN StopInProgress
;
145 // read complete event
147 KEVENT IrpReadComplete
;
149 }HIDCLASS_FILEOP_CONTEXT
, *PHIDCLASS_FILEOP_CONTEXT
;
161 PHIDCLASS_FILEOP_CONTEXT FileOp
;
164 // buffer for reading report
166 PVOID InputReportBuffer
;
171 ULONG InputReportBufferLength
;
176 PIO_WORKITEM CompletionWorkItem
;
178 }HIDCLASS_IRP_CONTEXT
, *PHIDCLASS_IRP_CONTEXT
;
183 IN PDEVICE_OBJECT DeviceObject
,
187 HidClassFDO_DispatchRequestSynchronous(
188 IN PDEVICE_OBJECT DeviceObject
,
193 HidClassPDO_CreatePDO(
194 IN PDEVICE_OBJECT DeviceObject
,
195 OUT PDEVICE_RELATIONS
*OutDeviceRelations
);
199 IN PDEVICE_OBJECT DeviceObject
,
202 PHIDP_COLLECTION_DESC
203 HidClassPDO_GetCollectionDescription(
204 PHIDP_DEVICE_DESC DeviceDescription
,
205 ULONG CollectionNumber
);
208 HidClassPDO_GetReportDescription(
209 PHIDP_DEVICE_DESC DeviceDescription
,
210 ULONG CollectionNumber
);