diff options
Diffstat (limited to 'console/console_write.cpp')
| -rw-r--r-- | console/console_write.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/console/console_write.cpp b/console/console_write.cpp new file mode 100644 index 0000000..3240ea5 --- /dev/null +++ b/console/console_write.cpp @@ -0,0 +1,32 @@ +#pragma once + +#include "console_write.hpp" + +void write(ra::mouse_modifier vars) { + HANDLE ra_handle = INVALID_HANDLE_VALUE; + + ra_handle = CreateFileW(L"\\\\.\\rawaccel", 0, 0, 0, OPEN_EXISTING, 0, 0); + + if (ra_handle == INVALID_HANDLE_VALUE) { + throw std::system_error(GetLastError(), std::system_category(), "CreateFile failed"); + } + + DWORD dummy; + + BOOL success = DeviceIoControl( + ra_handle, + RA_WRITE, + &vars, + sizeof(ra::mouse_modifier), + NULL, // output buffer + 0, // output buffer size + &dummy, // bytes returned + NULL // overlapped structure + ); + + CloseHandle(ra_handle); + + if (!success) { + throw std::system_error(GetLastError(), std::system_category(), "DeviceIoControl failed"); + } +} |