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
;
139 }HIDCLASS_FILEOP_CONTEXT
, *PHIDCLASS_FILEOP_CONTEXT
;
151 PHIDCLASS_FILEOP_CONTEXT FileOp
;
154 // buffer for reading report
156 PVOID InputReportBuffer
;
161 ULONG InputReportBufferLength
;
166 PIO_WORKITEM CompletionWorkItem
;
168 }HIDCLASS_IRP_CONTEXT
, *PHIDCLASS_IRP_CONTEXT
;
173 IN PDEVICE_OBJECT DeviceObject
,
177 HidClassFDO_DispatchRequestSynchronous(
178 IN PDEVICE_OBJECT DeviceObject
,
183 HidClassPDO_CreatePDO(
184 IN PDEVICE_OBJECT DeviceObject
,
185 OUT PDEVICE_RELATIONS
*OutDeviceRelations
);
189 IN PDEVICE_OBJECT DeviceObject
,
192 PHIDP_COLLECTION_DESC
193 HidClassPDO_GetCollectionDescription(
194 PHIDP_DEVICE_DESC DeviceDescription
,
195 ULONG CollectionNumber
);
198 HidClassPDO_GetReportDescription(
199 PHIDP_DEVICE_DESC DeviceDescription
,
200 ULONG CollectionNumber
);