ZHCACO6A january 2011 – may 2023
每个 USB 器件都包含一个供应商 ID (VID) 和一个米6体育平台手机版_好二三四 ID (PID)。USB 主机使用 VID/PID 组合来识别米6体育平台手机版_好二三四类型。按理说,来自给定 VID 供应商且具有给定 PID 的所有米6体育平台手机版_好二三四在功能上都是相同的。主机会将具有该 VID/PID 的所有器件关联到特定的 USB 器件类别,例如 HID 或 CDC。每次遇到此 VID/PID 时,它都会加载该特定的驱动程序。
在 Windows HID 驱动程序之上,情况看起来略有不同。HID 驱动程序会维护一个“HID 器件”列表,其中包含总线的所有“HID 器件”,且器件可通过通用索引进行选择,并使该列表可供其上面的主机应用程序使用。此列表中的“HID 器件”是逻辑实体,而不是物理 USB 器件。这些逻辑实体不一定直接映射到总线上的物理器件。
例如,可能会向主机应用程序报告多个具有给定 VID/PID 的“HID 器件”。这可能意味着该主机上连接了多个给定米6体育平台手机版_好二三四类型的物理器件;也可能是一个复合器件具有多个 HID 接口(可被视为逻辑器件)。此外,如果有 4 个以上的“HID 器件”,则可能同时存在这两个情况,如图 3-2 所示。
在此图中,Windows 应用程序无法立即知道这些“HID 器件”在现实世界中代表什么。
如果主机应用程序想要在这种多器件情况下正常工作,或者更进一步,想要充分利用物理器件上的多个 HID 数据管道,则需要进一步进行探索。它需要从每个 HID 器件收集的一个重要信息是序列号(在图 3-2 中标记为“sernum”)。USB 器件可以选择报告序列号,序列号用于标识一个唯一的物理设备,使其与包含相同 VID/PID 的所有其他物理设备区分开来。(如果选择使用描述符工具来实现这一点,MSP430 USB API 堆栈可以自动报告序列号。)
在获得总线上每个 HID 器件的 VID、PID 和序列号后,主机应用程序就可以开始了解总线上的情况。如果它找到两个具有给定 VID/PID 的 HID 器件,并且其序列号也相同,那么它就知道这是一个具有两个 HID 接口的复合 HID 器件。相反,如果这两个 HID 器件具有不同的序列号,应用程序就知道这是两个单接口 HID 物理器件。
借助这些技术,开发人员可以设计具有多个 HID 接口的器件,将每个接口用作特定类型信息的数据管道,相当于具有多个 COM 端口。除了其他优点外,这还有助于克服单个 HID 接口的带宽限制 (64kbps)。一个 MSP430 上可以并行运行多达 8 个 HID 接口,从而可以提供 512kbps 的带宽。
需要补充的是,如果 Windows 在初始枚举期间通过 USB 描述符识别出此器件是鼠标或键盘,则 Windows 本身将成为该 HID 器件的“主机应用程序”。它会发出报告请求并使用数据来控制屏幕上的鼠标或输入数据以进行文本输入。