| ログイン | ご入会 |
ADC連絡先
|
|
|
|
|
Q:Mac OS X の IORegistry にある IODeviceTree プレーンは動的なプレーンですか? A:いいえ、違います。まず、「プレーン(plane)」と「動的(dynamic)」の 2 つを定義しましょう。 IORegistry には、IORegistry のサブセットである Open Firmware デバイスのサブセットとなる各種のプレーンがあります。これらのプレーンは、特定のノードとそのプロパティを I/O 機能に従ってフィルタ処理します。現在デフォルトのプレーンは IOService で、その他のプレーンは IOUSB、IOPower、IODeviceTree などです。これらのプレーンの一部は(すべてではありません)動的なプレーンです。 したがって IOService プレーンのように、IORegistry 全体であるプレーンもあれば、USB などの I/O 機能のように特定の IORegistry のサブセットとなるプレーンもあります。 動的プレーンとは、USB デバイスなどの I/O デバイスの接続を検知できるものです。USB デバイスが接続されたり取り外されたりすると、 IORegistry はそのデバイスに関する情報を更新します。IODeviceTree プレーンは静的です。つまり、このプレーンは、ブート処理中に Mac OS X が認識する Open Firmware デバイスツリーがそのままコピーされたものです。そのままの形で IORegistry にコピーされ、USB デバイスを接続しても更新されることはありません。 IOKit ドライバを扱っていて、デバイスが接続されたり取り外されたりするのを知る必要がある場合には、IODeviceTree プレーンを使ってはいけません。デバイスが、FireWire または Audio などの専用プレーンを持っているのでない限り、IOService プレーンを使います。 IORegistry は、極めて大きなデータ構造なので、可能な限りプレーンを利用すれば、フィルタ処理されたサブツリーが使え、検索時の生産性が向上します。 なお、すべての Macintosh コンピュータにすべての有効なプレーンが用意されているわけではありません。例えば、IOFireWire プレーンは、FireWire を持っているコンピュータにだけ存在します。 [2002 年 2 月 13 日] |