summaryrefslogtreecommitdiff
path: root/driver/driver.h
diff options
context:
space:
mode:
Diffstat (limited to 'driver/driver.h')
-rw-r--r--driver/driver.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/driver/driver.h b/driver/driver.h
new file mode 100644
index 0000000..2a400de
--- /dev/null
+++ b/driver/driver.h
@@ -0,0 +1,47 @@
+#pragma once
+
+#include <ntddk.h>
+#include <kbdmou.h>
+#include <wdf.h>
+
+#include "vec2.h"
+
+#if DBG
+#define DebugPrint(_x_) DbgPrint _x_
+#else
+#define DebugPrint(_x_)
+#endif
+
+#define NTDEVICE_NAME L"\\Device\\rawaccel"
+#define SYMBOLIC_NAME_STRING L"\\DosDevices\\rawaccel"
+
+typedef struct _DEVICE_EXTENSION {
+ LARGE_INTEGER counter;
+ vec2d carry;
+ CONNECT_DATA UpperConnectData;
+} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
+
+WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(DEVICE_EXTENSION, FilterGetData)
+
+EXTERN_C_START
+
+DRIVER_INITIALIZE DriverEntry;
+EVT_WDF_DRIVER_DEVICE_ADD EvtDeviceAdd;
+EVT_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtIoInternalDeviceControl;
+EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL RawaccelControl;
+
+VOID RawaccelCallback(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PMOUSE_INPUT_DATA InputDataStart,
+ IN PMOUSE_INPUT_DATA InputDataEnd,
+ IN OUT PULONG InputDataConsumed
+);
+
+EXTERN_C_END
+
+VOID CreateControlDevice(WDFDRIVER Driver);
+
+VOID DispatchPassThrough(
+ _In_ WDFREQUEST Request,
+ _In_ WDFIOTARGET Target
+);