4 #define _HIDPI_NO_FUNCTION_MACROS_
10 #define HIDCLASS_TAG 'CdiH'
14 PDRIVER_OBJECT DriverObject
;
15 ULONG DeviceExtensionSize
;
16 BOOLEAN DevicesArePolled
;
17 PDRIVER_DISPATCH MajorFunction
[IRP_MJ_MAXIMUM_FUNCTION
+ 1];
18 PDRIVER_ADD_DEVICE AddDevice
;
19 PDRIVER_UNLOAD DriverUnload
;
22 } HIDCLASS_DRIVER_EXTENSION
, *PHIDCLASS_DRIVER_EXTENSION
;
27 // hid device extension
29 HID_DEVICE_EXTENSION HidDeviceExtension
;
39 PHIDCLASS_DRIVER_EXTENSION DriverExtension
;
44 HIDP_DEVICE_DESC DeviceDescription
;
49 HID_DEVICE_ATTRIBUTES Attributes
;
51 } HIDCLASS_COMMON_DEVICE_EXTENSION
, *PHIDCLASS_COMMON_DEVICE_EXTENSION
;
56 // parts shared by fdo and pdo
58 HIDCLASS_COMMON_DEVICE_EXTENSION Common
;
61 // device capabilities
63 DEVICE_CAPABILITIES Capabilities
;
68 HID_DESCRIPTOR HidDescriptor
;
73 PUCHAR ReportDescriptor
;
78 PDEVICE_RELATIONS DeviceRelations
;
80 } HIDCLASS_FDO_EXTENSION
, *PHIDCLASS_FDO_EXTENSION
;
85 // parts shared by fdo and pdo
87 HIDCLASS_COMMON_DEVICE_EXTENSION Common
;
90 // device capabilities
92 DEVICE_CAPABILITIES Capabilities
;
97 ULONG CollectionNumber
;
102 UNICODE_STRING DeviceInterface
;
107 PDEVICE_OBJECT FDODeviceObject
;
110 // fdo device extension
112 PHIDCLASS_FDO_EXTENSION FDODeviceExtension
;
114 } HIDCLASS_PDO_DEVICE_EXTENSION
, *PHIDCLASS_PDO_DEVICE_EXTENSION
;
116 typedef struct __HIDCLASS_FILEOP_CONTEXT__
121 PHIDCLASS_PDO_DEVICE_EXTENSION DeviceExtension
;
129 // read irp pending list
131 LIST_ENTRY ReadPendingIrpListHead
;
134 // completed irp list
136 LIST_ENTRY IrpCompletedListHead
;
139 // stop in progress indicator
141 BOOLEAN StopInProgress
;
144 // read complete event
146 KEVENT IrpReadComplete
;
148 } HIDCLASS_FILEOP_CONTEXT
, *PHIDCLASS_FILEOP_CONTEXT
;
160 PHIDCLASS_FILEOP_CONTEXT FileOp
;
163 // buffer for reading report
165 PVOID InputReportBuffer
;
170 ULONG InputReportBufferLength
;
175 PIO_WORKITEM CompletionWorkItem
;
177 } HIDCLASS_IRP_CONTEXT
, *PHIDCLASS_IRP_CONTEXT
;
182 IN PDEVICE_OBJECT DeviceObject
,
186 HidClassFDO_DispatchRequest(
187 IN PDEVICE_OBJECT DeviceObject
,
191 HidClassFDO_DispatchRequestSynchronous(
192 IN PDEVICE_OBJECT DeviceObject
,
197 HidClassPDO_CreatePDO(
198 IN PDEVICE_OBJECT DeviceObject
,
199 OUT PDEVICE_RELATIONS
*OutDeviceRelations
);
203 IN PDEVICE_OBJECT DeviceObject
,
206 PHIDP_COLLECTION_DESC
207 HidClassPDO_GetCollectionDescription(
208 PHIDP_DEVICE_DESC DeviceDescription
,
209 ULONG CollectionNumber
);
212 HidClassPDO_GetReportDescription(
213 PHIDP_DEVICE_DESC DeviceDescription
,
214 ULONG CollectionNumber
);
217 HidClassPDO_GetReportDescriptionByReportID(
218 PHIDP_DEVICE_DESC DeviceDescription
,
221 #endif /* _HIDCLASS_PCH_ */