题
我正在尝试学习如何从Mac OS X中的PCI设备获取信息。可用的。
我需要一个C设施,我知道目标C有一个I/O套件框架,但我无法使用它。
我追求的具体信息是非常基本的,只有供应商和设备ID。
解决方案
I/O套件 是 设备信息的系统框架。它不是Objective-C API;相反,Apple使用C ++的受限子集。引用 I/O套件基础知识 文档,
苹果考虑了I/O套件的几种编程语言,并选择了C ++的受限子集。
选择C ++是出于多种原因。 C ++编译器成熟,语言为系统编程提供了支持。此外,已经有一个拥有C ++经验的Macintosh(和BSD)开发人员的大型社区。
受限制的子集不允许C ++的某些功能,包括
- 例外
- 多元继承
- 模板
- 运行时类型信息(RTTI) - I/O套件使用其自己的运行时分型系统实现
这些功能被删除,因为它们被认为不适合在多线程内核中使用。如果您觉得需要这些功能,则应重新考虑您的设计。您应该能够编写使用I/O套件的任何驱动程序,并进行这些限制。
如果您不能使用C ++,那么一种选择是您的C程序调用 /usr/bin/ioreg
并解析其结果。
编辑: 您可能想看看 从应用程序访问硬件 文档。看起来可以在大多数情况下(如果不是全部)访问I/O注册表,并具有一定的核心基础。
不隶属于 StackOverflow