我正在从事一个项目,该项目涉及自动检测从OS X系统插入和拔出的USB和火线设备。对于给定的设备,系统需要在插入设备时识别该设备(无论是哪个端口),并加载特定于设备的捆绑包以进行处理。
进行这项工作的关键显然是每个设备的唯一标识。我知道USB设备是通过供应商ID和产品ID字段的组合来标识的,但这并不提供唯一的ID,而只是提供设备的“种类”。如果我有两个相同的设备,并且将它们都插入了计算机,则需要某种区分它们的方法。是否有通用且可靠的方式来执行此操作,也许使用USB描述符中的其他字段?
一个相关的问题,这对USB串行端口如何起作用?假设我插入了两个相同品牌/型号的USB串行端口。 OS X应该在/ dev树中为它们提供唯一的inode。但是,假设它称它们为/ dev / usbserial1和/ dev / usbserial2。如果我随后拔出端口并仅插入其中一个,则该端口将被赋予与以前相同的名称,还是只是插入/ dev / usbserial1(因为它是唯一的)?
尽管我认为火线设备应该具有64位GUID,但火线设备也存在同样的问题。在这种情况下,我正在寻找可以验证使用GUID进行火线设备识别的可靠方法的人。换句话说,如果我插入两个相同品牌和型号的独立相机,我是否希望它们具有不同的GUID?
我知道我可以使用适当的硬件来测试其中的一些,但是目前我没有多个硬件,因此我希望有人至少可以知道上述问题的一些答案。
最佳答案
幸运的是,除了VID / PID组合之外,您的USB设备还应该具有唯一的序列号。如果要枚举IOUSBDevice
对象,请查看USB Serial Number
属性。
关于macos - USB,火线和串行端口的唯一设备标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6290953/