cocoa - 如何在 Mac OS cocoa 中获取已安装 USB 设备的设备 ID、供应商 ID 和产品 ID

标签 cocoa usb mount iokit

我正在尝试编写一个 Cocoa 程序来检测连接到 Mac OS 的 iPod。我正在监听 NSWorkspaceDidMountNotification 和 NSWorkspaceDidUnmountNotification 以获取 USB 设备安装和卸载通知。我可以使用 NSString *path = [[notif userInfo] objectForKey:@"NSDevicePath"]; 获取已安装设备的设备路径但我还需要知道设备 ID、供应商 ID、产品 ID 等来检查安装的设备是否是 iPod。我认为前进的方向是 IOKit。但我有一种感觉,它适合低级编程。还有其他方法可以找到这些吗?另外,如果是 IO 套件,是否有任何示例程序可以在我提供安装路径时提供 Id?

非常感谢。

最佳答案

我认为您可以通过以下方式获取产品和供应商 ID

ioreg -p IOUSB -l -b | grep -E "@|idVendor|idProduct"

但不确定设备 ID。也许

ioreg -p IOUSB -l -b | grep -E "@|idVendor|idProduct|bcdDevice"

对于我的 Arduino Uno,这些是我得到的信息:

+-o Arduino Uno@14100000  <class AppleUSBDevice, id 0x100000bec, registered, matched, active, busy 0 (2 ms), retain 13>
      "idProduct" = 67
      "bcdDevice" = 1
      "idVendor" = 10755

关于cocoa - 如何在 Mac OS cocoa 中获取已安装 USB 设备的设备 ID、供应商 ID 和产品 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2020655/

相关文章:

ios - performSelector 或直接

swift - 如何在 `NSURLSession` 超时时显示错误并终止应用程序?

arduino - 将 Arduino 串行通信移植到独立的 atmega328

linux - initramfs,为什么需要挂载根文件系统?

objective-c - AVFoundation H.265 硬件编码

objective-c - 如何将图像放在大纲 View 中仅父行的文本单元格旁边?

Android 与 USB 设备的通信

c# - 检测设备是否使用 USB 3.0

linux - 为什么我不能使用 mount --bind/proc/<pid>/ns/mnt 到 ubuntu 中的另一个文件?

使用 secretfile 挂载 cephfs