电脑如何区分键盘USB和鼠标USB?
Posted
技术标签:
【中文标题】电脑如何区分键盘USB和鼠标USB?【英文标题】:how can the computer distinguishes between keyboard USB and mouse USB? 【发布时间】:2017-01-27 13:10:15 【问题描述】:想知道PC如何区分多个USB。例如,当我将闪存驱动器 USB 插入计算机时,它如何知道它是闪存驱动器 USB 而不是键盘 USB ?
提前致谢。
【问题讨论】:
错误的站点。您正在寻找Super User。该站点用于编程相关问题。话虽如此:当您插入设备时,操作系统会查询它是什么,并且设备会告诉它。就像你走进一家餐馆,服务员走过来一样。他们问你想吃什么,你告诉他们。你认为它还能怎么做? 感谢您的回复,我只是想知道这是怎么回事。你帮助了我,我得到了答案,谢谢。 【参考方案1】:在 USB 标准中有 USB 类,记忆棒是 USB 大容量存储类,键盘、鼠标、操纵杆是 USB HID 类(人机接口设备),相机实现USB PTP(图片传输协议),USB-to-serial(虚拟COM端口,...)是USB CDC ACM类, ...
以下链接列出了该 Windows 的所有 USB 类具有驱动程序https://msdn.microsoft.com/en-us/library/windows/hardware/ff538820%28v=vs.85%29.aspx
当插入 USB 设备时,USB 设备(固件)上的 MCU 和 PC(USB 主机)之间会进行通信。在这种通信中,设备说明它是哪个 USB 类,主机加载合适的驱动程序
您可以使用 wireshark
或查看 dmesg
(在 linux 上)来嗅探此通信
这种通信是非常低级的,不容易被人类阅读。有像wireshark
或lsusb -v
这样的工具
USB 设备必须实现一个特殊的描述符层次结构,其中包含 USB 设备内部结构的信息。层次结构是:
设备描述符 -> 配置描述符 -> 接口描述符 -> 端点描述符
EP0 保留用于控制传输,否则任何传输都必须去往或来自端点(OUT 端点/IN 端点)
见http://www.beyondlogic.org/usbnutshell/usb1.shtml
USB 是一个非常复杂的标准,因为它在一个物理接口中为大量不同的设备实现了广泛的功能。我认为最复杂的 USB 类标准是 USB 音频...
【讨论】:
以上是关于电脑如何区分键盘USB和鼠标USB?的主要内容,如果未能解决你的问题,请参考以下文章