У меня есть устройство, которое работает как HID (клавиатура). Мне удалось захватить и захватить необработанный ввод устройства на Linux. Мне нужно было получить эксклюзивные права на устройство, чтобы никакое другое приложение не могло получать от него информацию. Я сделал это, используя ioctl
и EVIOCGRAB
Но он не компилируется в Windows. Я обнаружил, что есть функция RegisterRawInputDevices
, но она не предоставляет эксклюзивных прав на устройство. Что можно использовать на Windows для достижения того же эффекта?
Вот мой код, который работает на Linux
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <dirent.h>
#include <linux/input.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/select.h>
#include <sys/time.h>
#include <termios.h>
#include <signal.h>
int main(int argc, char* argv[])
{
struct input_event ev[64];
int fevdev = -1;
int result = 0;
int size = sizeof(struct input_event);
int rd;
int value;
char name[256] = "Unknown";
char *device = "/dev/input/event16";
fevdev = open(device, O_RDONLY);
ioctl(fevdev, EVIOCGRAB, 1);
while (1)
{
read(fevdev, ev, size * 64);
value = ev[0].value;
printf ("code - %d \n", ev[1].code);
}
ioctl(fevdev, EVIOCGRAB, 0);
close(fevdev);
}