我正在从事一个项目,该项目涉及自动检测从 OS X 系统插入和拔出的 USB 和火线设备。对于给定的设备,系统需要在插入设备时识别设备(无论哪个端口)并加载特定于设备的捆绑包来处理它。
实现这项工作的关键显然是每个设备的唯一标识。我知道 USB 设备是由供应商 ID 和产品 ID 字段的组合标识的,但这不提供唯一 ID,只提供设备的“种类”。如果我有两个相同的设备并将它们都插入计算机,我想要一些方法来区分它们。是否有一种通用且可靠的方法来执行此操作,也许使用 USB 描述符中的其他字段?
一个相关的问题,这对 USB 串行端口有什么作用?假设我插入了两个相同品牌/型号的 USB 串行端口。OS X 应该在 /dev 树中为它们提供唯一的 inode。但是,假设它称它们为 /dev/usbserial1 和 /dev/usbserial2。如果我然后拔下端口并仅插入其中一个,该端口是否会被赋予与以前相同的名称,还是只会插入 /dev/usbserial1(因为它是唯一的)端口?
火线设备也有同样的问题,尽管我认为火线设备应该有 64 位 GUID。在这种情况下,我正在寻找某人来验证使用 GUID 进行火线设备识别是否可靠。换句话说,如果我插入两个相同品牌和型号的独立相机,我会期望它们有不同的 GUID 吗?
我知道我可以使用适当的硬件测试其中的一些,但我目前没有多个硬件,所以我希望有人至少知道上述问题的一些答案。