问题标签 [iokit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3498 浏览

cocoa - 如何在 Mac OS X 中检测 SSD?

是否有可靠、快速、确定的方法(即不是基准测试)来检查 Mac OS X 所在的系统驱动器是否为固态驱动器?

是否有任何其他指标表明磁盘处理并行访问的能力如何?我正在尝试调整我的程序将用于磁盘绑定操作的线程数。

我对原始速度或寻道时间不感兴趣,只有哪种类型的访问——串行或并行——对驱动器来说更快。我不希望我的程序的用户使用 iSCSI 或 RAID。SSD 是我的重点,其他任何东西都很好。

Device CharacteristicsofIOAHCIBlockStorageDevice包含此信息。如何以编程方式阅读它?


到目前为止,我发现它是这样的:(以下是伪代码)


编辑:这是完整的源代码。我已经验证它适用于 Intel SSD 和 OCZ Vertex。

0 投票
0 回答
1399 浏览

macos - 帮助为 OS X 编写 DVB 驱动程序

我正在寻找在 OS X 上访问 DVB 数据的选项。最初我想支持 EyeTV DTT USB 设备,但从长远来看,我想支持一些流行的设备。我遇到的问题是没有控制此类设备的标准方法。

我所知道的所有使用它们的应用程序要么将驱动程序代码隐藏在应用程序中(例如 EyeTV 本身,它的所有驱动程序都完全在用户空间中实现,外部应用程序无法访问),或者它们使用看似已过时的MMInputFamily驱动程序(没有源代码不再可用,作者走了)。

我进行了一些研究,发现 Linux DVB 项目支持许多我想要支持的设备。进一步的研究表明,几年前曾尝试对 linux 实现进行抽象,以便可以在其他平台上重新编译它。这个想法是支持设备的努力应该集中起来,而做到这一点的最佳方法是使当前的开源实现在多个平台上工作:然而,最终似乎很少。

针对其他 *nix 类型平台编译 linux 驱动程序的想法也已在其他地方取得了一些成功。作者采用的方法在我链接的页面上有详细说明,它似乎在 OS X 上也可能可行。

无论如何,似乎有很多选择,但没有明确的赢家:

  • 找到 MMInputFamily 驱动程序的源代码,尝试让它在 OS X 10.6 上运行并添加对我需要的设备的支持,参考 linux 源代码以获取指针。问题:源代码无处可寻,作者也无处可寻。此外,如果作者完全赞赏之前将 linux 驱动程序移植到 OS X 的努力,他似乎可能会走另一条路。
  • 尝试以类似于我链接的 FreeBSD 项目的方式将 linux 驱动程序移植到 OS X。问题:这是非常底层的工作,如果可以避免,Apple不建议在这一层工作。
  • 使用 OS X 的IOKit编写驱动程序:这是实现驱动程序的首选方法,但我必须从头开始做所有事情,显然不是一件小事。

如果可以的话,我真的很想使用 Linux 源代码,但我不确定这样的事情是否真的可行。有没有人对完成这项任务的最佳方式有任何建议或想法?

0 投票
1 回答
775 浏览

macos - 如何测试驱动 IOKit 用户空间驱动程序开发?

我即将尝试使用 IOKit 在 OS X 上为我的应用程序编写 USB 驱动程序。我选择了用户空间路线而不是开发 kext,因为它更容易调试等,但我无法弄清楚如何测试我的开发。

如果可能的话,我想找到一种将假 USB 设备插入 IOKit 注册表的方法,并让我的单元测试确保我的驱动程序代码以正确的方式对各种通知做出反应。我最初的研究并没有出现太多,但似乎没有任何方法可以从用户空间创建这样一个模拟设备,这反过来意味着我必须编写一个专门用于驱动我的测试的 kext:显然这个远非理想,因为我又回到了与在那个水平上发展的所有问题作斗争。

有没有人有在 OS X 上测试这种驱动程序开发的经验?

0 投票
2 回答
487 浏览

macos - IOKit USB 库中的“245”是什么?

我开始在 OS X 上使用 IOKit,我对 IOKit USB 库中的数据类型标记的 '245' 感到困惑,例如IOUSBInterfaceInterface245。245是什么意思?我只是好奇这个数字最后应该表示什么。它似乎是某个东西的版本号。

是否有我可以使用的通用版本,而不必使用特定版本?

0 投票
3 回答
19707 浏览

macos - 如何在 OS X 上获取 CPU 温度和风扇速度?

如何在 OS X 中获取 CPU 温度和风扇速度?

我知道信息是从IOHWSensorin获得的IOKit,但我无法找到任何关于如何准确执行此操作的可靠信息。

我找到了一篇带有示例程序的文章 - http://www.booktou.com/node/148/0321278542/ch10lev1sec7.html,但我得到的只是GPU温度。我确定一体式 Mac 上有 CPU 温度传感器,所以这意味着我做错了什么。

0 投票
1 回答
1167 浏览

macos - 在 OS X 上从 IOKit KEXT 发布信息

我在 Mac OS X 上有一个基于 IOKit 的内核扩展,它是 IOService 的子类。当此服务加载时,我需要从中发布其他特定的运行时信息,并且我需要它可以从用户空间访问,而无需发出一些特定的 IOUserClient 请求。有问题的信息基本上是字段\值对,它的格式在 KEXT 和它的用户空间包装库之间共享。当服务处于活动状态时,内容会随着服务内部某些特定事件的变化而变化。

在 Linux 上,我可以使用 /proc 文件系统中的文件来完成此操作。你能在 OS X 上建议类似的策略吗?也许与 IORegistry 有关?

谢谢你。

0 投票
1 回答
1871 浏览

xcode - 使用可可通过 USB 发送信号?

只是想知道,是否有任何“API”可以通过 USB 电缆向使用 Apple 的可可编程语言的设备发送信号,以便我可以将其与应用程序结合使用?

它比几个命令复杂得多,还是我需要一个库?

我没有外部设备通信的经验,所以欢迎任何帮助!

0 投票
2 回答
7790 浏览

macos - OSX:如何从 IOUSBDeviceInterface 或位置 ID 获取卷名(或 bsd 名)

我正在尝试编写一个将特定 USB 字符串描述符(USB 大容量存储设备的)与其卷或 bsd 名称相关联的应用程序。

因此,代码会遍历所有连接的 USB 设备,获取字符串描述符并从中提取信息。我想获取这些 USB 设备的卷名。我找不到合适的 API 来做到这一点。我试图这样做:

但是 DADiskCreateFromIOMedia 函数返回 nil,我假设我传递的 usb_device_ref 与函数期望的 io_service_t 不兼容。

那么如何获取 USB 设备的卷名呢?

我可以使用位置 ID 来做到这一点吗?

谢谢阅读。-L

0 投票
1 回答
495 浏览

c - IOKit 头文件 assert.h 不见了?

我想获取我的 mac 以太网卡的硬件地址。在我在 IOKit/assert.h 中看到的所有示例中。我的系统上似乎不存在。GCC 抛出一个错误,说他不知道类型 IOEthernetAddress。我的任务需要 assert.h 吗?如果有人能给我一个工作样本,那就太好了。[编辑] 这是我的代码,认为这将有助于理解问题:

0 投票
3 回答
2555 浏览

macos - 无法编辑 IORegistryEntry

我正在 Mac 上创建软件,我想更改 IORegistryEntry 的值。我可以在 IORegistryExplorer 上查看它,但我无法编辑它。所以我的理解是我必须通过代码来编辑它。这是我的代码:

这将输出

但是在我检查了 IORegistryExplorer 中的值之后,它仍然没有改变。有人有什么建议吗?

谢谢