首页> C#>如何区分USB设备类型?

在阅读了有关使用USB设备的this question资料之后,我想知道操作系统使用哪种方法来区分USB设备的类型?

例如,我可以插入USB鼠标,而计算机“只是知道”它就是鼠标.如果我插入1GB的USB驱动器,它“就知道”,它相当于1GB的可移动存储空间.

设备正在使用哪种代码来“宣布”它的类型?还是操作系统正在轮询设备并获得标准化响应?

我将如何对设备进行编程以将自己标识为键盘?

最佳答案
为了构建可通过USB工作的设备,几乎可以肯定,您必须阅读http://www.usb.org/developers/docs/提供的USB规范.

关于您的特定问题,有与各种标准USB变量关联的GET方法.这些存储在设备的固件中,并在需要时提供.例如,GET_DESCRIPTOR,GET_STATUS等是可以发送到设备的请求类型.

USB具有自己的一套协议,要完全实现它是一项艰巨的任务,因此大多数设备制造商都从第三方购买USB控制器芯片.

如果您只是想一起破解某些东西,那么我认为该规范足以使您发送一些数据包.

我能想到的唯一其他选择可能不适合您的项目.窃听一个真正的键盘,让键盘处理所有复杂的地址解析和设备标识等,然后让您的设备随时随地将数据推送到电线上.

这是我在高中时建立一个用于窃听密码的键盘黑匣子时所要处理的事情,黑匣子存储的按键然后将它们重新灌输到电线上,就好像它是键盘一样.一旦它存储了一些密码,并且我找回了它,我必须将其插入键盘上,然后再将其拔下,然后再将其设置为输出按键(打开方便的gedit窗口:P),否则键盘会中断用自己的数据进行传输.

转载注明原文:首页> C#>如何区分USB设备类型? - 代码日志