Mac OS X、C 用于读取 PCI 设备信息的工具
我正在尝试学习如何从 Mac OS X 中的 PCI 设备获取信息。到目前为止,我还没有在 sysctl(3) 中找到任何有关它的信息,并且似乎 BSD 中的旧 devinfo(3) 设施不可用可用的。
为此,我需要一个 C 工具,我知道有一个用于 Objective C 的 I/O 工具包框架,但我无法使用它。
我想要的具体信息非常基本,只是供应商和设备 ID。
I'm trying to learn how to get information from PCI devices in Mac OS X. So far I haven't been able to find anything about it in sysctl(3) and it seems the old devinfo(3) facilities from BSD are not available.
I need a C facility for this, I know there is an I/O kit framework for Objective C but I cannot use this.
The specific information I'm after is pretty basic, just vendor and device ID's.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
I/O Kit是设备信息的系统框架。它不是 Objective-C API;相反,Apple 使用 C++ 的受限子集。引用I/O Kit 基础知识文件,
如果您无法使用 C++,那么一种替代方法是让您的 C 程序调用 /usr/bin/ioreg 并解析其结果。
编辑:您可能需要查看从应用程序访问硬件文档。看起来访问 I/O 注册表可以在大部分(如果不是全部)使用 C 代码完成,并使用一些 Core Foundation。
I/O Kit is the system framework for device information. It is not an Objective-C API; instead, Apple use a restricted subset of C++. Quoting the I/O Kit Fundamentals document,
If you cannot use C++ then one alternative is to have your C program call
/usr/bin/ioreg
and parse its results.Edit: you might want to take a look at the Accessing Hardware from Applications document. It looks like accessing the I/O registry can be done with C code for the most part (if not all), with a bit of Core Foundation.