计算机如何区分键盘USB和鼠标USB?

4

想知道电脑如何区分多个USB设备。例如,当我将闪存驱动器USB插入计算机时,它如何知道它是闪存驱动器USB而不是键盘USB?

先行致谢。


错误的网站。你应该访问[su]。此网站是为了与编程有关的问题。话虽如此:当你插入设备时,操作系统会查询设备并获得信息。就像你走进一家餐厅,服务员过来问你想吃什么,你告诉他们一样。还有别的方法吗? - Ken White
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Mahmoud Anwer
1个回答

2
在USB标准中,有着不同的USB类别,例如:存储设备是USB大容量存储器类,键盘、鼠标、游戏手柄是USB HID类(Human Interface Device),相机则实现了USB PTP(图片传输协议),USB转串口(虚拟COM端口等)是USB CDC ACM类等等。
以下链接列出了Windows所支持的所有USB类别https://msdn.microsoft.com/en-us/library/windows/hardware/ff538820%28v=vs.85%29.aspx
当USB设备插入时,MCU(固件)与PC(USB主机)之间会进行通信。在该通信过程中,设备会告诉主机它所属的USB类别,主机会加载相应的驱动程序。
你可以使用wireshark或者在Linux上使用dmesg来嗅探这种通信。
但是,这种通信是非常低级的,并不易于人类阅读。因此,有一些工具如wireshark或者lsusb -v可以用来解析这种通信。
一个USB设备必须实现一种特殊的描述符层次结构,其中包含USB设备内部结构的信息。这个层次结构是:
设备描述符 -> 配置描述符 -> 接口描述符 -> 端点描述符
EP0保留用于控制传输,否则任何传输都必须经过端点(OUT端点/IN端点)。
请参见http://www.beyondlogic.org/usbnutshell/usb1.shtml USB是一个高度复杂的标准,因为它在一个物理接口中实现了广泛的功能,适用于大量不同的设备。我认为最复杂的USB类标准是USB音频...

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