#pragma once #define _HIDPI_NO_FUNCTION_MACROS_ #include #include #include #include #include #include #include #include typedef struct { // // lower device object // PDEVICE_OBJECT NextDeviceObject; // // irp which is used for reading input reports // PIRP Irp; // // event // KEVENT ReadCompletionEvent; // // device object for class callback // PDEVICE_OBJECT ClassDeviceObject; // // class callback // PVOID ClassService; // // mouse type // USHORT MouseIdentifier; // // wheel usage page // USHORT WheelUsagePage; // // usage list length // USHORT UsageListLength; // // current usage list length // PUSAGE CurrentUsageList; // // previous usage list // PUSAGE PreviousUsageList; // // removed usage item list // PUSAGE BreakUsageList; // // new item usage list // PUSAGE MakeUsageList; // // preparsed data // PVOID PreparsedData; // // mdl for reading input report // PMDL ReportMDL; // // input report buffer // PCHAR Report; // // input report length // ULONG ReportLength; // // file object the device is reading reports from // PFILE_OBJECT FileObject; // // report read is active // UCHAR ReadReportActive; // // stop reading flag // UCHAR StopReadReport; }MOUHID_DEVICE_EXTENSION, *PMOUHID_DEVICE_EXTENSION; #define WHEEL_DELTA 120 NTSTATUS MouHid_InitiateRead( IN PMOUHID_DEVICE_EXTENSION DeviceExtension);