Palm Programmer's Laboratory
Palm OS Programmer's Companion Volume I/7-10
7-10 カスタムコール
いくつかのファイルシステムは、VFSマネージャや拡張マネージャのAPIに含まれていない機能を備えているため、VFSマネージャは配下のファイルシステムに開発者がアクセスできるようにするための独立した関数を1つ提供しています。この VFSCustomControl という関数は、登録されたクリエータコードとともに実行される操作を識別するセレクタを取ります。VFSCustomControl は特定のファイルシステムに特定の処理を行うように要求することもできますし、登録済みの全てのファイルシステムを反復して希望する処理に応答するようなファイルシステムを検索することもできます。
ファイルシステムのカスタム関数に渡すパラメータは、VFSCustomControl の1つのパラメータを通して渡されます。このパラメータである valueP は void* として宣言されているため、どのような構造体のポインタでも渡すことができます。2つめのパラメータである valueLenP を使用して valueP の長さを指定します。これらの値が単純にファイルシステムに渡されるだけのものであり、実際にはファイルシステムに依存していることに注意して下さい。詳細については、Palm OS Programmer's API Reference の VFSCustomControl 関数の説明を参照して下さい。
VFSCustomControl はファイルシステム固有の非標準的な機能にアクセスするためにデザインされているため、提供されるカスタム関数の一覧についてはそれぞれのファイルシステムのドキュメントを参照して下さい。
カスタム I/O
拡張マネージャと VFS マネージャはセカンダリストレージアプリケーションに対して高レベルの OS サポートを提供しますが、カスタム I/O アプリケーションに対しては直接的なインタフェイス以上のものを提供しようとはしていません。これは実際問題として拡張機構のあらゆる使用法を予期できないからであり、拡張マネージャと VFS マネージャは単純にカスタムハードウェアのあり方に立ち入らないようにしています。
拡張マネージャはカードの着脱に関するノティフィケーションを提供し、ドライバのロードとアンロードをすることができます。それ以外は全てアプリケーション開発者の責任となります。Palm はライセンシーが拡張することのできる標準的な拡張スロットドライバ API を定義しています。この API は拡張マネージャ、VFS マネージャ、およびファイルシステムライブラリが必要とする全てをサポートするようにデザインされています。しかし、I/O デバイスとやりとりする必要のあるアプリケーションは、提供されている API 以上のものを必要とするかもしれません。そのようなアプリケーションでは、必要に応じてスロットカスタムコールが使えなければなりません。これは拡張スロットドライバへの直接アクセスを提供するものです。スロットドライバとスロットカスタムコールの詳細情報については、ライセンシーに提供される開発者ドキュメントを参照して下さい。特定の I/O デバイスで利用できる関数のドキュメントについては、その I/O デバイスのメーカーに問い合わせて下さい。