From 3dc64cc13a7a2a6da843fdd33e0791f154e8a2dc Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Fri, 3 Sep 2021 18:15:39 -0400 Subject: [PATCH] make ioctls constexpr --- common/rawaccel-io-def.h | 10 +++++----- common/rawaccel-io.hpp | 11 +++-------- driver/driver.cpp | 6 +++--- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/common/rawaccel-io-def.h b/common/rawaccel-io-def.h index 399e0f2..2f67b8f 100644 --- a/common/rawaccel-io-def.h +++ b/common/rawaccel-io-def.h @@ -8,8 +8,8 @@ #include #endif -#define RA_DEV_TYPE 0x8888u - -#define RA_READ CTL_CODE(RA_DEV_TYPE, 0x888, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define RA_WRITE CTL_CODE(RA_DEV_TYPE, 0x889, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define RA_GET_VERSION CTL_CODE(RA_DEV_TYPE, 0x88a, METHOD_BUFFERED, FILE_ANY_ACCESS) +namespace rawaccel { + constexpr ULONG READ = (ULONG)CTL_CODE(0x8888u, 0x888, METHOD_BUFFERED, FILE_ANY_ACCESS); + constexpr ULONG WRITE = (ULONG)CTL_CODE(0x8888u, 0x889, METHOD_BUFFERED, FILE_ANY_ACCESS); + constexpr ULONG GET_VERSION = (ULONG)CTL_CODE(0x8888u, 0x88a, METHOD_BUFFERED, FILE_ANY_ACCESS); +} \ No newline at end of file diff --git a/common/rawaccel-io.hpp b/common/rawaccel-io.hpp index a80e254..57bf707 100644 --- a/common/rawaccel-io.hpp +++ b/common/rawaccel-io.hpp @@ -5,9 +5,6 @@ #include "rawaccel-error.hpp" #include "rawaccel.hpp" -#pragma warning(push) -#pragma warning(disable:4245) // int -> DWORD conversion while passing CTL_CODE - namespace rawaccel { inline void io_control(DWORD code, void* in, DWORD in_size, void* out, DWORD out_size) @@ -42,12 +39,12 @@ namespace rawaccel { inline void read(io_t& args) { - io_control(RA_READ, NULL, 0, &args, sizeof(io_t)); + io_control(READ, NULL, 0, &args, sizeof(io_t)); } inline void write(const io_t& args) { - io_control(RA_WRITE, const_cast(&args), sizeof(io_t), NULL, 0); + io_control(WRITE, const_cast(&args), sizeof(io_t), NULL, 0); } inline version_t get_version() @@ -55,7 +52,7 @@ namespace rawaccel { version_t v; try { - io_control(RA_GET_VERSION, NULL, 0, &v, sizeof(version_t)); + io_control(GET_VERSION, NULL, 0, &v, sizeof(version_t)); } catch (const sys_error&) { // assume request is not implemented (< 1.3) @@ -81,5 +78,3 @@ namespace rawaccel { } } - -#pragma warning(pop) diff --git a/driver/driver.cpp b/driver/driver.cpp index 82a56c0..4cc0072 100644 --- a/driver/driver.cpp +++ b/driver/driver.cpp @@ -183,7 +183,7 @@ Return Value: } switch (IoControlCode) { - case RA_READ: + case ra::READ: status = WdfRequestRetrieveOutputBuffer( Request, sizeof(ra::io_t), @@ -207,7 +207,7 @@ Return Value: bytes_out = sizeof(ra::io_t); } break; - case RA_WRITE: + case ra::WRITE: status = WdfRequestRetrieveInputBuffer( Request, sizeof(ra::io_t), @@ -251,7 +251,7 @@ Return Value: } break; - case RA_GET_VERSION: + case ra::GET_VERSION: status = WdfRequestRetrieveOutputBuffer( Request, sizeof(ra::version_t),