summaryrefslogtreecommitdiff
path: root/driver/driver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'driver/driver.cpp')
-rw-r--r--driver/driver.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/driver/driver.cpp b/driver/driver.cpp
index 5fa1dd1..778f3be 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<LONGLONG>(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),