Mac中如何获取usb设备的设备描述符和配置描述符?

2024-03-02

I have minimum exposure to xcode and I/Okit framework. I have seen device descriptor and configuration descriptor of a usb device in USB prober.enter image description here

我使用 I/O 套件框架编写了一个 xcode 程序,当我们将该设备的产品 ID 和供应商 ID 作为输入时,该程序将 USB 设备名称作为输出。

/*Take the vendor and product id from console*/

printf("\nEnter the vendor id : ");
scanf("%lx",&usbVendor);

printf("\nEnter the product id :");
scanf("%lx",&usbProduct);


/* Set up a matching dictionary for the class */
matchingDict = IOServiceMatching(kIOUSBDeviceClassName);
if (matchingDict == NULL)
{
    return -1; // fail
}
// Create a CFNumber for the idVendor and set the value in the dictionary
numberRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &usbVendor);
CFDictionarySetValue(matchingDict, 
                     CFSTR(kUSBVendorID), 
                     numberRef);
CFRelease(numberRef);

// Create a CFNumber for the idProduct and set the value in the dictionary
numberRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &usbProduct);
CFDictionarySetValue(matchingDict, 
                     CFSTR(kUSBProductID), 
                     numberRef);
CFRelease(numberRef);
numberRef = NULL;

/*Get an iterator.*/
kr = IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDict, &iter);
if (kr != KERN_SUCCESS)
{
    return -1;// fail
}

/* iterate */
while ((device = IOIteratorNext(iter)))
{
    /*Display the device names */

    io_name_t       deviceName;
    kr = IORegistryEntryGetName(device, deviceName);
    if (KERN_SUCCESS != kr) {
        deviceName[0] = '\0';
    }


    printf("\ndeviceName:%s",deviceName);

    /*Free the reference taken before continuing to the next item */
    IOObjectRelease(device);
}

/*Release the iterator */
IOObjectRelease(iter);
return 0;

}

我需要修改它,以便在提供 USB 设备的供应商和产品 ID 时,我将获得设备描述符和配置描述符(如 USB 探测器中所示)作为输出。

这里我只是举了一个例子,代码可以改变,但输出必须是描述符(至少是设备描述符)。

提前致谢...


我认为你应该下载USBProber的源代码而不是自己搞清楚。

USBProber 中提供的所有信息您迟早可以通过分析源代码获得。

这里是下载IOUSBFamily源代码的链接,里面有USBProber。http://opensource.apple.com/tarballs/IOUSBFamily/ http://opensource.apple.com/tarballs/IOUSBFamily/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mac中如何获取usb设备的设备描述符和配置描述符? 的相关文章

  • 在当前参数寄存器中找到的选择器名称:isEqual:

    我正在寻求一些帮助来消除 OSX 应用程序中的一个我无法解决的错误 我收到以下记录错误 Selector name found in current argument registers isEqual 但我一生都无法弄清楚它来自哪里 因为
  • AspNet vNext 上的 Kestrel 不提供 / 下的索引页面

    我需要能够在默认网址下提供我的 index html 使用 Kestrel Web 服务器 现在我只能使用完整路径访问我的静态文件 即 index html 同样 这在 VisualStudio 上完美运行 上下文是带有 Kestrel 的
  • 如何使用编译时间作为自动版本控制信息?

    当程序被编译以获得一种自动版本信息时 是否有任何常量或 pragma来获取时间和日期 DATE and TIME 是预定义的宏 将分别扩展到当前日期和时间
  • Swift 5 MacOS 图像调整大小内存问题

    我是使用 Swift 进行 Mac OS 应用程序开发的新手 但我尝试制作简单的 ImageResizer 应用程序 我必须调整 50k 图像的大小 10个小时后 内存已增加到近120GB 我以为 Swift 也有垃圾收集器 为什么它可以增
  • Mac OS X 中 Bash 脚本中的 SFTP 命令

    我需要使用 SFTP 和 SSH 从 Mac 主机将文本文件传输到远程 PC freeSSH 这两个连接在本地网络中 那么有没有办法从 Bash 脚本内部运行 SFTP 命令 使用提供的用户名和密码 我已经尝试过一些脚本expect 但我没
  • 原生插入符位置 macos cocoa

    我希望能够使用 cocoa 或 appleScript 获取 Mac High Sierra 中任何应用程序内的全局插入符位置 我已经使用 NSEvent 来获取键盘和鼠标挂钩 但是有没有办法获取插入符位置挂钩 插入符号与鼠标位置不同 它会
  • Xcode“使用性能工具运行”被禁用?

    我正在尝试从我的 Xcode 项目中查找内存泄漏 我不知道发生了什么 我无法选择任何内容Run gt Run with performance tool 事物列表被禁用 请帮助我 我是初学者 问题是我已经删除了构建文件夹并尝试使用性能工具运
  • OSX Swift 在默认浏览器中打开 URL

    如何使用 Swift 作为编程语言和 OSX 作为平台在系统默认浏览器中打开 URL 我发现了很多UIApplication like UIApplication sharedApplication openURL NSURL string
  • 由于 Crittercism 的 .sh 文件而无法上传应用程序

    我们自过去 2 年以来一直在使用 Crittercism SDK 并且能够成功上传应用程序 自过去 2 天以来 由于 dsym upload sh 文件 我们无法使用 Crittercism 上传应用程序 任何人都遇到同样的问题 Critt
  • MacOS High Sierra KEXT 加载 - 有什么方法可以取消用户批准吗?

    正如某些 MacOS 开发人员所知 Apple 实施了安全内核扩展加载 https developer apple com library content technotes tn2459 index html 用户可以通过单击批准第三方
  • 从 AVAudioRecorder 获取分贝

    我正在尝试从 AVAudio 录音机获取分贝值 这是我目前的代码 我有一个启动录音机的方法 然后是一个读取分贝值的方法 var recorder AVAudioRecorder 全局定义的记录器 然后在此处使用 func init reco
  • 如何设置Python的USER_SITE;我需要吗?

    我在 OS X 10 10 只需使用 pip 维护 上安装了 Python 我的站点包位于 Library Python 2 7 site packages 苹果的封装在 System Library Frameworks Python f
  • 为什么我无法在 Mac 12.0.1 (Monterey) 上使用 pip 安装 OpenCV? [复制]

    这个问题在这里已经有答案了 当我尝试使用 python pip 安装 OpenCV 时 它显示了以下内容 Remainder of file ignored Requirement already satisfied pip in Libr
  • Delphi - 如何获取 USB 可移动硬盘和记忆棒的列表?

    在我的应用程序 Delphi 中 我需要列出所有 USB 存储设备 这些可以是闪存棒or外部存储驱动器 有一个Jvcl成分JvDriveCombo 并且它有DriveType属性 问题是我是否选择DriveType Fixed那么除了外部驱
  • git 可以与 Xcode 集成吗?

    有没有办法将 git 存储库与 Xcode 内置的 SCM 功能一起使用 Xcode 4 原生支持 git WWDC 2010 上的开发者工具国情咨文演讲 在这里了解更多 Xcode 4 中的新增功能 http developer appl
  • 在 64 位 OS X 10.6 上制作胖二进制文件更喜欢 32 位的正确方法?

    假设我问用户 你想在 32 位模式还是 64 位模式下运行 他们选择 32 位 我如何向操作系统注册这一事实 我看过arch http developer apple com mac library documentation Darwin
  • 仅在 iPhone X 上显示状态栏

    如果不是 iPhone X 则希望隐藏状态栏 如果是 iPhone X 则希望显示状态栏 这很可能必须以编程方式完成 因为 plist 中没有支持此功能的键 我发现的最接近的一个是UIStatusBarHidden 方法一 You have
  • Xcode 4 调试器代码完成

    首先 很高兴他们尝试在 Xcode 4 中的 gdb 命令提示符上完成代码 但在当前状态下 它使得使用命令提示符来调查目标 c 对象几乎不可能 当我打字时 它自动将单词补全为我不想要的内容 并且如果不手动选择文本并将其删除 然后重新开始 则
  • 所有针对 iTunes Connect 的构建,导入此构建时出错 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我将构建上传到应用程序商店 之后它在活动中显示错误 任何人都可以帮帮我 SOLVED 转到构建设置 gt 搜索 bitcode gt 转启
  • 如果加载 dylib,垃圾收集工作队列会崩溃

    我们正在将应用程序从 10 6 移植到 10 8 我正在查看我们在应用程序中加载的 dylib 我面临着非常不寻常的崩溃垃圾收集工作队列并附有以下消息 malloc Thread suspend unable to suspend a th

随机推荐

  • 使用 Direct2D/DirectWrite 确定文本边界框

    ID2D1RenderTarget DrawGlyphRun采用以下参数 D2D1 POINT 2F baselineOrigin in CONST DWRITE GLYPH RUN glyphRun in ID2D1Brush foreg
  • 如何将 pandas 中的字符串转换为日期时间格式?

    我有一个专栏I DATE数据框中的字符串 对象 类型称为train如下图所示 I DATE 28 03 2012 2 15 00 PM 28 03 2012 2 17 28 PM 28 03 2012 2 50 50 PM 如何转换I DA
  • 条件面板 R 中的多个条件闪亮

    在闪亮的应用程序中使用条件面板时是否可以有多个条件 我想隐藏几个选项卡的特定 UI 组件 以下是我正在尝试的内容 但当我有多个条件时它似乎并不适用 library shiny library shinyWidgets library shi
  • 缺少引用 OLEDB 连接类型的库

    我从以下代码中得到了SSIS 团队博客 http blogs msdn com b mattm archive 2008 08 22 accessing oledb connection managers in a script aspx转
  • 无法访问的服务 - appsactivity

    我今天在执行我的 google apps 脚本 webapp 时开始收到消息 无法访问服务 appsactivity 有谁知道是否会停电 无法访问的服务 appsactivity 之前的答案是正确的 但提到的问题现已作为重复项关闭 http
  • 使用 Python 和 Selenium 将照片上传到 Craigslist

    在windows10上使用python3 selenium和firefox 这个程序很简单 它直接跳转到 craigslists 的 发布新列表 页面 上传多张照片 然后提交 我遇到的问题是我无法控制对话框使用硒导航到正确的文件 brows
  • 多个 MessageDialog 应用程序崩溃

    I use MessageDialogues在我的应用程序的几个地方 问题是 无论何时MessageDialog 或系统警报 例如功能警告 处于活动状态 另一个我的MessageDialog被调用时 应用程序毫无例外地崩溃或崩溃Unatho
  • 不同用户的会话超时时间不同

    是否可以为不同的用户设置不同的会话超时 我需要为管理员提供 180 分钟的会话 为非管理员用户提供 20 分钟的会话 目前 所有用户的单个会话超时 我们正在使用 web config 密钥 任何帮助 将不胜感激 Setting Sessio
  • MICE 中的条形图不显示分类变量

    我正在使用miceR 中的包进行多重插补 我仅使用数值变量进行了几次插补 插补方法是预测均值匹配 当我使用stripplot imp 我可以看到所有变量的观察值和估算值 当我估算分类变量和数值变量的组合时 就会出现问题 数值变量的插补方法是
  • 为什么 Akka Streams 会吞掉我的异常?

    为什么异常在 import akka actor ActorSystem import akka stream ActorMaterializer import akka stream scaladsl Source object Test
  • 如何在android中对齐自定义对话框中心?

    我正在开发一个应用程序 我想将对话框显示为屏幕尺寸 所以我使用了下面的代码 我通过这里得到了解决方案警报对话框中未显示警报消息 https stackoverflow com questions 10432184 alert message
  • MySQL vs. SQL Server vs. Oracle [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我一直只使用MySQL 没有使用其他数据库系统 今天在公司会议上提出了一个问题 我很尴尬我不知道 对于开发人员来说 MS 或 Oracle
  • 日志在 yii2 中不起作用

    我想在 app log 中添加日志 我的配置文件 log gt traceLevel gt YII DEBUG 3 0 targets gt file gt class gt yii log FileTarget levels gt err
  • 如何多次执行带参数的 Rake 任务?

    这是不可能的invoke循环内相同的 rake 任务不止一次 https stackoverflow com questions 4822020 rake task in loop executes only first task 但是 我
  • 将PIL图像传递到google云视觉,无需保存和读取

    更新如下 有没有办法将 PIL 图像传递到谷歌云视觉 我尝试使用io Bytes io String and Image tobytes 但我总是得到 Traceback most recent call last C Users visi
  • 开发占用空间较小的 Spring Boot 应用程序

    为了让我们在 spring boot 中开发并在 Cloud Foundry 上运行的微服务占用空间更小 我们正在寻找实现这一目标的最佳方法 任何朝这个方向的输入或指示都将受到欢迎 最好总是从最低限度的依赖项开始向上构建应用程序 并且仅在需
  • Volley 加上列表适配器中的 OutOfMemoryError

    我在用凌空加 https github com DWorkS VolleyPlus图书馆 我正在展示ListView图像和文本视图没有错误 但是当我在这个列表视图中上下滚动很多时间时 它得到OutOfMemoryError并使应用程序崩溃
  • R Roxygen 链接到父函数

    考虑一个基础包XYZ 别人写的 有一个函数ABC 我想扩展功能ABC通过以下方法在我的新 不是 XYZ 包中 ABC lt function INSERT EXTRA WORK CALL THE BASE METHOD XYZ ABC 现在
  • 如何将控制器包含在 Ruby on Rails gem 中?

    我正在尝试为一个开源项目做出贡献 我需要一个控制器来处理几个需要提交的表单 我在 gem 内的一个目录中创建了这些控制器 名为app controllers gemname my controller rb 但是 当我尝试访问控制器时 它似
  • Mac中如何获取usb设备的设备描述符和配置描述符?

    I have minimum exposure to xcode and I Okit framework I have seen device descriptor and configuration descriptor of a us