diff --git a/driver/driver.cpp b/driver/driver.cpp index 5fa1dd19..778f3be3 100644 --- a/driver/driver.cpp +++ b/driver/driver.cpp @@ -2,6 +2,9 @@ #include "driver.h" +#define RA_READ CTL_CODE(0x8888, 0x888, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) +#define RA_WRITE CTL_CODE(0x8888, 0x889, METHOD_BUFFERED, FILE_ANY_ACCESS) + #ifdef ALLOC_PRAGMA #pragma alloc_text (INIT, DriverEntry) #pragma alloc_text (PAGE, EvtDeviceAdd) @@ -144,13 +147,13 @@ Return Value: size_t size; UNREFERENCED_PARAMETER(Queue); - UNREFERENCED_PARAMETER(IoControlCode); + PAGED_CODE(); DebugPrint(("Ioctl received into filter control object.\n")); - if (InputBufferLength == sizeof(ra::settings)) { + if (IoControlCode == RA_WRITE && InputBufferLength == sizeof(ra::settings)) { LARGE_INTEGER interval; interval.QuadPart = static_cast(ra::WRITE_DELAY) * -10000; KeDelayExecutionThread(KernelMode, FALSE, &interval); @@ -180,7 +183,7 @@ Return Value: WdfRequestComplete(Request, STATUS_SUCCESS); } - else if (OutputBufferLength == sizeof(ra::settings)) { + else if (IoControlCode == RA_READ && OutputBufferLength == sizeof(ra::settings)) { status = WdfRequestRetrieveOutputBuffer( Request, sizeof(ra::settings), diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index c2ed4989..71e580dc 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -114,9 +114,10 @@ public void SetActiveValues( Sensitivity.SetActiveValues(xSens, ySens); Rotation.SetActiveValue(rotation); OptionSetX.SetActiveValues(xMode, xArgs); - OptionSetY.SetActiveValues(yMode, yArgs); WholeVectorMenuItem.Checked = isWhole; ByComponentVectorMenuItem.Checked = !isWhole; + ByComponentVectorXYLock.Checked = xArgs.Equals(yArgs); + OptionSetY.SetActiveValues(yMode, yArgs); } public void SetActiveValues(DriverSettings settings) diff --git a/signed/driver/rawaccel.sys b/signed/driver/rawaccel.sys new file mode 100644 index 00000000..794158d4 Binary files /dev/null and b/signed/driver/rawaccel.sys differ