为模拟输入设备编写Windows驱动程序

12

我的应用程序需要表现为虚拟手柄(想象一下用鼠标拖动一个正方形,并将其转换为模拟操纵杆的输出),并通过网络向另一台计算机发送一些按键,接收该输入的驱动程序。

我只需要支持XP、Vista和Win7。

也许可以不编写驱动程序就完成。我尝试使用SendKey()发送按键,似乎可以工作,但不知道怎样模拟模拟操纵杆。

我已经下载了VDK并阅读了所有我能找到的有关此主题的资料,但仍有很多不理解的地方。请问您能否指点我正确的方向?

  1. 我应该构建内核模式或用户模式驱动程序吗?
  2. 我的驱动程序可以作为网络上一个应用程序的服务器吗?
  3. 您知道哪些好的教程/书籍/示例可以帮助我解决这个问题吗?

谢谢

2个回答

6

首先,您需要在计算机(或网络)和被控制的操纵杆设备之间建立某种接口。

如果需要制作定制硬件来控制模拟操纵杆(例如用于控制气动或液压系统,而不仅仅是PC游戏手柄类型的设备),那么几乎肯定需要一个驱动程序,以允许网络应用程序移动(机器人手臂或其他设备)该操纵杆。

如果可以从物理操纵杆中移除,也许您可以编写软件来模拟操纵杆插入的输入位置(操纵杆/串行端口?),或者完全模拟它(一个相当简单的驱动程序可以做到这一点)。如果操纵杆使用标准通信接口(如RS232),则可以使用现有库处理所有内容,并设置虚拟COM端口,这些端口对于您尝试与之通信的任何内容都是不可区分的,因此完全不需要编写驱动程序。

目前可以购买的最好的驱动程序开发书籍是使用Windows Driver Foundation开发驱动程序

Rootkits: Subverting the Windows Kernel是另一本很棒的书,但它没有涵盖很多新的WDF内容。它更注重安全方面,但有几个非常棒的章节介绍设备驱动程序,并提供了完整的示例,以一种非常易懂的方式进行分解。


RS232支持游戏手柄吗?它不仅仅是原始通信吗?Windows如何使用RS232处理模拟信号? - rraszewski

0

如果只是在网络上,可能简单的套接字编程就足够了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接