summaryrefslogtreecommitdiff
path: root/console/console_write.cpp
blob: 3240ea5835af9cb8001046142e8eaf0fd41059cd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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");
	}
}