機能拡張
定数と構造体を、デバイスに依存しない方法と、デバイス固有の (ベンダー固有の) 方法の両方で拡張するためのプロビジョニングが行われます。 スカラー列挙体である定数では、値の範囲は将来の一般的な拡張機能用に予約されています。 値の残りの部分は、デバイス固有として識別されます。 ベンダーは、これらの値の意味を任意の方法で定義できます。 それらの解釈は、LINEDEVCAPS データ構造で提供される拡張 ID にキー付けされます。 ビット フラグとして定義されている定数の場合、下位ビットの範囲が予約され、上位ビットは拡張固有である可能性があります。 拡張値とビット配列では、最高値または上位ビットダウンのビットを使用することをお勧めします。 これにより、将来的に行う必要がある場合は、共通部分と拡張部分の間で境界線を移動するオプションが残ります。 データ構造の拡張には、固定パーツの一部であるサイズ/オフセットを持つ可変サイズのフィールドが割り当てられます。 TAPI では、デバイス固有の拡張機能が許可されるデータ構造ごとに説明します。
アプリケーションは、特定の拡張機能識別子を認識するだけでなく、アプリケーションとサービス プロバイダーが動作する拡張機能のバージョン番号をネゴシエートする必要があります。 これは、 lineGetDevCaps 関数の 2 番目のバージョン ネゴシエーション フェーズで行われます。
拡張識別子は、グローバルに一意の識別子です。 拡張機能識別子の中央レジストリはありません。 代わりに、ツールキットで使用できるユーティリティによって、製造元によってローカルに生成されます。 この数値は、グローバルな一意性を保証するために、一意の LAN アドレス、時刻、乱数などの部分で構成されます。 グローバル一意識別子は、HP/DEC の汎用一意識別子と区別できるように設計されているため、それらと完全に互換性があります。