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

2023-11-30

我正在尝试编写一个 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • E/RecyclerView:未连接适配器;跳过布局(使用 FRAGMENTS)

    我根据我找到的类似问题的答案修改了我的代码 但没有一个起作用 我正在使用 TabFragments 和 RecyclerViews 控制台显示错误 E RecyclerView 未连接适配器 跳过布局 四次 修改它时也给了我错误 java
  • 使用 cfprocparam 将数组或列表导入 Oracle

    我有一个值列表 想通过存储过程插入到表中 我想我会将一个数组传递给 Oracle 并循环访问该数组 但我不知道如何将数组传递给 Oracle 我会传递一个列表 但我不知道如何使用该列表将其转换为使用 PL SQL 的数组 我对 PL SQL
  • 使用 React hooks 在 REACTJS 中使用数组填充动态下拉列表的步骤

    请原谅我缺乏知识 因为我对 ReactJS 还很陌生 我正在尝试创建一个动态下拉系统 其中有国家下拉菜单和城市下拉菜单 并且我想从其中包含多个数组的 const 中获取数据 这是我拥有的 const 的示例 const countries
  • 如何为iphone 3.0编译pjsip

    我一直在尝试为 iphone 3 0 编译 pjsip 但一直无法做到 我尝试遵循 siphon 和 voiphone 使用 pjsip 的开源 iphone 项目 的指南 显然我不是唯一一个无法为 iphone 3 0 编译 pjsip
  • 如何建立自引用表

    在源表中 有两列 如下快照所示 那么对于目标表 它应该是这样的 DimLocationKey 是自动生成的代理键 如何在SSIS中实现自引用效果 我尝试了以下方法 但它不起作用 因为查找中没有匹配项 如果该列可为空 则您可以加载 locat
  • 在char数组中间插入字符

    我有一个填充了一些字符的字符数组 假设我的字符数组中有 HelloWorld 不是字符串 占用索引0到9 我想做的是在数组中间插入一个字符 然后将其余字符推到一边 为要插入的新字符腾出空间 因此 我可以使 char 数组中包含 Hello
  • 理解和实现 R 中分位数函数的数值积分

    我需要使用 R 计算下面的积分 我设法在 R 中使用分位数回归完成 q theta x 函数 包 quantreg matrix structure c 0 01 0 02 0 03 0 04 0 05 0 06 0 07 0 08 0 0
  • cakePHP 文件下载未找到或不可读

    我现在已经挣扎了一个小时试图解决这个问题 我用它来下载文件app uploads 目录 它说目录未找到或不可读 但我检查了它 它也存在使用的文件 file File filename 我想知道我在这里缺少什么 file this gt Fi
  • 在executeBatch()之后使用CallableStatement检索ResultSet

    我需要多次调用存储过程并使用executeBatch 为了这 每次调用都应返回包含结果的表 但我无法访问此结果 接下来的代码工作正常 callableStatement setString 1 foo callableStatement s
  • 重新设计后如何拒绝来自 iTunes Connect 的二进制文件 (12/09/2014)?

    我需要拒绝我的二进制文件 以便重新上传 这一直是 iTunes connect 上的一个隐藏选项 现在重新设计了 我到处找都找不到 根据苹果自己的文档 从审核中删除您的版本 打开应用程序的 应用程序详细信息 页面 如中所述打开应用程序的 应
  • 如果安装了3.5,还需要.net Framework 2.0吗?

    我想知道如果安装了 net Framework 3 5 运行 net 2 0应用程序是否仍然需要 net Framework 2 0 谢谢 Net 3 5 实际上是 Net 2 0 加上一些额外功能 除非 Net 2 0 也存在 否则无法安
  • re.findall 表现得很奇怪

    源字符串是 Python 3 4 3 s r abc123d hello 3 1415926 this is my book 这是我的模式 pattern r 0 9 0 9 0 9 然而 re search可以给我正确的结果 m re s
  • 如何防止用户在 Ionic/Cordova 中截屏?

    是否可以阻止用户在使用 Ionic Cordova 开发的 Android 应用程序中截取屏幕截图 如果可以的话 怎样做 我在 Ionic 论坛上提问 但没有得到答案 是的 您可以使用插件来做到这一点 使用这里的一个 http blog d
  • 是否有使用 @Version 的可配置替代方案?

    我正在放置一个带注释的字段 Version在我所有的 JPA 域类中 但这似乎只是额外的样板 有没有办法通过配置来解决这个问题 TIA Ole 据 JPA 规范告诉我们 您无法更改 Version通过 配置 进行注释 你要么使用 Versi
  • 异步回发后如何保持整个页面滚动位置

    我正在使用 asp net 4 0 iis 7 5 microsoft Visual Studio 2010 我想要的是当异步回发发生时 更新面板 保持整个页面 浏览器 滚动位置 不是 div 或面板 我怎样才能做到这一点 实际上我有一个函
  • 动态添加到 TableLayoutPanel 的行显示在不同的行位置

    我正在尝试通过单击按钮将 TextBox 动态添加到 TableLayoutPanel 中 通过单击鼠标选择行 选择行后 单击按钮将在所选行号上插入文本框 Problem是正确之后显示在不同选定的行上使用 TextBox 3 或 4 次 进
  • 如何更改 ScrollBar 的宽度?

    我想更改 TFrame 的 ScrollingBar 宽度 我知道我可以通过以下方式更改系统中的所有 ScrollingBar SystemParametersInfo SPI SETNONCLIENTMETRICS 但是我该如何为特定的
  • Haskell 列表错误的部分和

    我需要在 Haskell 中编写一个函数 对列表的元素求和 直到某些特定元素存储在另一个列表中 例如partial add 1 2 3 4 5 6 2 5 0应该返回 3 12 6 我已经达到了这样的程度 partial add count
  • 删除数组中连续出现的重复项

    有什么方法可以从下面的数组中删除连续的重复项 同时只保留第一个重复项 该数组如下所示 a array 1 gt go 2 gt stop 3 gt stop 4 gt stop 5 gt stop 6 gt go 7 gt go 8 gt
  • 如何在 Mac OS cocoa 中获取已安装 USB 设备的设备 ID、供应商 ID 和产品 ID

    我正在尝试编写一个 Cocoa 程序来检测连接到 Mac OS 的 iPod 我正在监听 NSWorkspaceDidMountNotification 和 NSWorkspaceDidUnmountNotification 以获取 USB