我有一个需要知道它运行的 OS X 版本的 kext。CocoaDev 有一篇文章描述了如何使用 Gestalt() 获取 OS X 版本信息,但代码需要 Cocoa。
我可以从 kext 调用 Gestalt() 吗?
如果是这样,我用什么#include 来定义它?
如果没有,还有其他解决方案吗?
背景:
我想在从 10.4 到 10.7 的所有 OS X 版本上使用相同的 kext。
但是:kexts callcdevsw_add
,在 Lion 中以非向后兼容的方式进行了更改。随着(显然)对调用它的一些内核程序的更改,这些更改意味着 - 根据例程之前的注释 -cdevsw_add
在 10.7 上应该使用与 OS X 10.0 到 10.6 不同的第一个参数来调用它。(Lion 为-12,早期版本为-1。)
如果 kexts 可以确定它们在哪个版本的 OS X 上运行,那就很容易了。(如果没有,这样做会很痛苦——可能是一个可怕的组合,比如构建两个不同版本的 kext,然后让 kext 加载代码选择要加载的版本。)