Написание драйвера Windows для эмулируемого устройства ввода

Мое приложение должно вести себя как виртуальный джойстик (представьте себе перетаскивание квадрата мышью и перевод его на выход аналогового джойстика) и отправьте несколько нажатий клавиш по сети на другой компьютер, где драйвер получит этот вход.

Мне нужно только поддерживать XP, Vista и Win7.

Возможно, это можно сделать без написания драйвера. Я попытался отправить нажатия клавиш с помощью SendKey(), который, казалось, работал, но не умеет эмулировать аналоговый джойстик.

Я загрузил VDK и читал все, что мог найти на эту тему, но есть много вещей, которые я до сих пор не понимаю. Не могли бы вы указать мне в правильном направлении?

  • Должен ли я создать драйвер режима ядра или пользователя?
  • Может ли мой драйвер действовать как сервер для приложения в сети?
  • Знаете ли вы хорошие учебники/книги/образцы, которые могут помочь мне в этом.

Спасибо

Ответ 1

Прежде всего, вам придется иметь какой-то интерфейс между вашим компьютером (или сетью) и управляемым джойстиком.

Если речь идет о создании специального оборудования для управления аналоговым джойстиком (например, он контролирует пневматику или гидравлику или что-то в этом роде, а не только вещь типа джойстика для ПК), то да, вам почти наверняка понадобится драйвер, позволяющий сетевому приложению move (рука робота или что-то еще) переместит этот джойстик.

Если вы можете удалить физический джойстик из уравнения, возможно, вы можете написать программное обеспечение, которое эмулирует вход везде, где используется джойстик (джойстик/последовательный порт?), или эмулирует его полностью (достаточно простой драйвер может это сделать). Вы можете сделать это полностью без написания драйвера, если джойстик использовал стандартный коммуникационный интерфейс (например, RS232), поскольку существуют библиотеки, которые будут обрабатывать все это, и вы можете настроить виртуальные COM-порты, которые будут неотличимы от того, с чем вы пытаетесь установить связь.

Лучшая книга, которую вы можете купить на разработке драйверов на данный момент, Разработка драйверов с помощью Windows Driver Foundation

Rootkits: Подчинение ядра Windows - еще одна отличная книга, но не покрывает много новых вещей WDF. У него больше внимания с точки зрения безопасности, но есть несколько удивительных глав драйверов устройств с примерами с полной ложкой, которые разбиваются на действительно доступный способ.

Ответ 2

Если это только по сети, возможно, достаточно простого программирования сокетов.