USB键盘的Windows HID设备驱动程序

时间:2016-02-15 11:37:11

标签: windows keyboard usb hid wdk

我用USB设备解决了这个问题:

  • 连接到POS PC(Windows POSReady 2009),有一个USB键盘和一个USB达拉斯I-Button阅读器
  • USB Reader连接到MoBo USB总线,并显示为USB Composite设备:

    USB复合设备 USB \ VID_134B& PID_0206& REV_0100

    兼容的HID设备 HID \ VID_134B& PID_0206& REV_0100& MI_01

    USB输入设备(第一个实例)USB \ VID_134B& PID_0206& REV_0100& MI_00

    USB输入设备(第2个实例)USB \ VID_134B& PID_0206& REV_0100& MI_01

    HID键盘 HID \ VID_134B& PID_0206& REV_0100& MI_00

  • 当我用阅读器阅读I-Button时,按钮内的代码被添加到键盘缓冲区(因为它是用物理键盘键入的)和活动应用程序(有键盘焦点)接收代码

  • 我的应用程序必须与USB设备处理的代码交互,但是我必须在TextBox上频繁地关注以接收代码
  • 这并不总是可行的,尤其是无人值守的MessageBoxes,它会引起焦点(和键盘输入)并可能造成故障
  • 最重要的是应该在串口或TCP / IP上安装阅读器,但这是我们唯一的选择(我们无法更改阅读器)

所以,我的想法是从阅读器键盘捕获传入的“按键”,避免附加到系统键盘缓冲区,并通过WM_USER,WM_COPYDATA,Socket或其他方法将它们传递给我的应用程序。

因此,目标是编写一个驱动程序,仅应用于特定的USB HID设备(I-Button阅读器,但不适用于真正的PC键盘),它们阻止按键并以某种方式发送到应用程序。

我检查了“键盘过滤器”的微软方式,但我只能阻止一些键组合,但这不是我的目标。

我想我应该创建个人“kbdhid.sys”和/或“kbdcalss.sys”驱动程序的自定义并仅应用于我的USB HID阅读器。

有人能指出我正确的方向吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

将您的阅读器设置为在发送代码之前发送前缀 监视键盘的que以获取前缀并弹出应用程序,以便接收键盘输入。

然而,许多读者只能设置为发送控制代码,如STX - 女巫是control_B - 并由Windows使用。