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) ファイルを変更するには

  1. 新しい定数と型の定義をインターフェイス ファイルに追加します。
  2. インターフェイス ファイルの末尾にコールバック関数を追加します。
  3. インターフェイス ファイルの末尾に新しい関数を追加します。

[version] 属性は、インターフェイス ヘッダーで最大で 1 回発生する可能性があります。

version 属性が存在しない場合、インターフェイスの既定のバージョンは 0.0 です。

メジャーとマイナーの間のピリオド文字は区切り記号であり、小数点を表しません。 マイナー番号は整数として扱われます。 先行ゼロは重要ではありません。 末尾のゼロは重要です。

たとえば、バージョン設定 1.11 は 1 のメジャー値と 11 のマイナー値を表します。 バージョン 1.11 は、1.1 から 1.2 の間の値を表していません。

関連項目

インターフェイス定義 (IDL) ファイル

インターフェイス

オブジェクト

uuid