version 属性
[version] インターフェイス属性は、RPC インターフェイスの複数のバージョン間で特定のバージョンを識別します。 version 属性を使用すると、互換性のあるバージョンのクライアントソフトウェアとサーバーソフトウェアのみがバインドできることを確認できます。
version ( major-value[[. minor-value]] )
-
major-value
-
メジャー バージョン番号を表す 0 から 65,535 までの短い符号なし整数を指定します。
-
minor-value
-
マイナー バージョン番号を表す 0 から 65,535 までの短い符号なし整数を指定します。 マイナー バージョンの値は省略可能です。 存在する場合、マイナー バージョンの値はメジャー バージョン番号からピリオド文字 (.) で区切られます。 指定しない場合、マイナー バージョンの値は 0 です。
MIDL コンパイラは、COM インターフェイスの複数のバージョンをサポートしていません。 その結果、[object] 属性を含むインターフェイス属性リストに [version] 属性を含めることはできません。 既存の COM インターフェイスの新しいバージョンを作成するには、インターフェイスの継承を使用します。 派生 COM インターフェイスは異なる UUID を持ちますが、基本インターフェイスのインターフェイス メンバー関数、状態コード、およびインターフェイス属性を継承します。
[uuid] 値と組み合わせて、[version] 値はインターフェイスを一意に識別します。 クライアントがリモート関数を呼び出すときに、ランタイム ライブラリは [version] 値と [uuid] 値をサーバーに渡します。 クライアントは、次の場合に特定のインターフェイスのサーバーにバインドできます。
- [uuid] の値は同じです。
- メジャー バージョン番号は同じです。
- クライアントのマイナー バージョン番号が、サーバーのマイナー バージョン番号以下です。
マイナー バージョン番号のみが変更されるようにインターフェイスを変更するのは、バージョン間の上位互換性を維持すること、およびユーザーの利点です。 既存の関数で使用されていない新しいデータ型を追加するときや、既存の関数のインターフェイス仕様を変更せずに新しい関数を追加する場合は、上位互換性を維持できます。
次のいずれかの条件が適用される場合は、メジャー バージョン番号を変更します。
- 既存の関数で使用されるデータ型を変更する場合。
- 既存の関数のインターフェイス仕様を変更する場合 (パラメーターの追加や削除など)。
- 既存の関数によって呼び出されるコールバックを追加する場合。
次のすべての条件が適用される場合は、マイナー バージョン番号を変更します。
- 既存の関数またはコールバックで使用されていない型定義または定数を追加する場合。
- 既存の関数を変更せず、新しい関数をインターフェイスに追加する場合。
- 既存の関数によって呼び出されないコールバックを追加し、新しいコールバックが既存の関数に従う場合。
変更がインターフェイスに対する上位互換性の変更と見なされる場合は、次の手順を使用します。
インターフェイス (IDL) ファイルを変更するには
- 新しい定数と型の定義をインターフェイス ファイルに追加します。
- インターフェイス ファイルの末尾にコールバック関数を追加します。
- インターフェイス ファイルの末尾に新しい関数を追加します。
[version] 属性は、インターフェイス ヘッダーで最大で 1 回発生する可能性があります。
version 属性が存在しない場合、インターフェイスの既定のバージョンは 0.0 です。
メジャーとマイナーの間のピリオド文字は区切り記号であり、小数点を表しません。 マイナー番号は整数として扱われます。 先行ゼロは重要ではありません。 末尾のゼロは重要です。
たとえば、バージョン設定 1.11 は 1 のメジャー値と 11 のマイナー値を表します。 バージョン 1.11 は、1.1 から 1.2 の間の値を表していません。