| ログイン | ご入会 |
ADC連絡先
|
|
|
|
| Q: 私のデバイスは、ホットプラグすると KEXT がロードされますが、ブート時にはロードされません。なぜでしょう? A: この現象が起こる理由は 2 つあります。 まず、自分の KEXT ではないブート時 KEXT、つまり よくある例としては、ベンダ固有のドライバをもつ複合 USB デバイスです。ブート時には、アップルの複合クラスドライバが一致します(複合クラスドライバは、マスストレージクラスデバイスからブートするために必要なので、ブート時 KEXT でなければなりません)。そのため、ベンダ固有のドライバはロードされません。しかし、デバイスがホットプラグされれば、適合するすべてのドライバがデバイスのドライバ候補となり、ベンダ固有のドライバは複合クラスドライバよりも適切なドライバとして選択されます。 この問題を解決するには、 もう 1 つ原因として考えられるのは、Mac OS X 10.1 から、ブート時 KEXT のロード時に行われるバージョンと依存関係のチェックが厳しくなったことです。
Project Builder で MODULE_VERSION を変更した後でも、プロジェクトをクリーンアップし、場合によっては、再度コンパイルを行う前に Finder で build フォルダを削除する必要があります。なぜなら、Project Builder は、情報の一部をキャッシュしているからです。ブート時における KEXT のロードの詳細については、 Loading Kernel Extensions at Boot Time を参照してください。 [2004 年 1 月 15 日] |