私は実行中のOS Xのバージョンを知る必要があるkextを持っています。 CocoaDev has an articleは、Gestalt()を使用してOS Xのバージョン情報を取得する方法を説明していますが、コードにはCocoaが必要です。kextでOS Xのバージョン番号を取得するにはどうすればよいですか?
kextからGestalt()を呼び出すことはできますか?
もしそうなら、それを定義するのに#includeを使用しますか?
他の解決方法はありますか?
背景:
私は10.4から10.7を通じてOS Xのすべてのバージョンで同じのkextをで使用したいと思います。
しかし、kexts call cdevsw_add
は、後方互換性のない方法でLionで変更されました。カーネルプログラムを呼び出すカーネルプログラムの変更に伴い、は、OS X 10.0から10.6ではなく、10.7で異なる最初の引数で呼び出される必要があります。 (ライオンで-12、以前のバージョンで-1)
kextsが実行中のOS Xのバージョンを判断できる場合は、簡単です。 (もしそうでないなら、kextsの2つの異なるバージョンを構築し、どのkext-loadコードをロードするかのような恐ろしいクルージュかもしれません)
好奇心で、あなたはどんなドライバーを見ていますか?私はOSS tuntaposxドライバシステムのライオンバグを修正しているので、私は尋ねるだけです。それがこの質問に到着した理由です!ありがとう... –
PPS: '' bsd_stubs.c'の '' cdevsw_add(...) 'に' '-1 'を送信することについてのコメントをかなり前に見ました。実際にはXNUのソースに長い間入っています。たとえば、ここは[10.6.0ソース]です(http://www.opensource.apple.com/source/xnu/xnu-1456.1.26 /bsd/kern/bsd_stubs.c)。コードを見れば、送信するのが理想的ではないとしても-1がライオンでうまくいくはずです。 –
これらのバージョンの範囲は間違っています。おそらくあなたは 'bdev' /' cdev'や 'isfree' /' add'を混乱させるでしょうか?ここに私が持っているものがあります。** [10.0.0](http://opensource.apple.com/source/xnu/xnu-123.5/bsd/kern/bsd_stubs.c) - [10.4.11] (http://opensource.apple.com/source/xnu/xnu-792.25.20/bsd/kern/bsd_stubs.c)**:自動挿入に厳密に '-1'を渡す必要があります。何もそれほど打ち切らない。 ** [10.5.0](http://opensource.apple.com/source/xnu/xnu-1228/bsd/kern/bsd_stubs.c) - [10.7.5](http://opensource.apple.com /source/xnu/xnu-1699.32.7/bsd/kern/bsd_stubs.c)**: '-1'を渡すと' 0'で検索が開始され、 '-12'を使うことが推奨されます。 (...) – jrodatus