macos - USB,火线和串行端口的唯一设备标识符

标签 macos usb device-driver firewire

我正在从事一个项目,该项目涉及自动检测从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/

相关文章:

macos - 如何从终端使用 LLDB

linux - libusb 无法声明设备

windows - 驱动程序<->操作系统/应用程序它是如何工作的?一个例子

usb - Windows下如何解决USB设备重连问题

Python:如何在 Mac 中使用 ASCII #219 打印 'block'

macos - 用于辅助键盘的 OSX HID 过滤器?

ios - 使用 ScheduledAudioFileRegion 安排整个文件

c - 使用 CubeMX 的 STM32F0 USB CDC_Init_FS() 和 CDC_Receive_FS()

linux - 通过USB读取RFID并在本地服务器上使用

linux - 即将在终端上打印 KERNEL 消息