インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

オブジェクト・インターフェイスへのポインターの取得 (Windows*)

このトピックは、Windows* にのみ適用されます。

オブジェクト・インターフェイスへのポインターを取得するには、そのオブジェクトの識別子を知る必要があります。

オブジェクトの識別

オブジェクトの識別により、別の開発グループによって作成された COM オブジェクトを使用することができます。オブジェクト・クラスを開発元に関係なく一意に識別するために、COM はグローバル一意識別子 (GUID) を使用しています。GUID は、空間と時間を超えた一意性が (すべての実用目的で) 保証される 16 バイトの整数値です。COM は GUID を使用して、オブジェクト・クラス、インターフェイス、および一意の識別を必要とするその他の要素を識別します。

オブジェクトのインスタンスを作成するには、オブジェクトの GUID を COM に伝えます。識別に 16 バイトの整数を使用することは、コンピューターにとっては簡単なことですが、一般の開発者にとっては大変なことです。このため、COM はプログラム識別子 (ProgID) と呼ばれる、より精度の低いテキスト名もサポートします。ProgID の形式を次に示します。

application_name .object_name .object_version

オブジェクト・インターフェイスへのポインターを取得する

モジュールウィザードによって生成されたルーチンを使用するには、オブジェクト・インターフェイスへのポインターを取得する必要があります。このポインターは、モジュールウィザードによって生成されるすべてのインターフェイスの第 1 引数である $OBJECT 引数の値として使用されます。

一般的に、COM ルーチンの COMCreateObject を呼び出して、オブジェクト・インターフェイスへの最初のオブジェクト・ポインターを取得します。COMCreateObject は、オブジェクト・クラスの新しいインスタンスを作成し、ポインターを返します。COMCreateObject は、2 つのサブルーチン COMCreateObjectByProgID と COMCreateObjectByGUID の総称です。

次に、COMCreateObjectByGUID に渡す引数を説明します。

COMCreateObjectByProgID サブルーチンおよび COMCreateObjectByGUID サブルーチンは、サーバーが定義した外部から作成可能なオブジェクトのインターフェイスへのポインターを返します。ただし、すべてのオブジェクトが外部から作成できるというわけではありません。多くの場合、サーバーはオブジェクト階層 (またはオブジェクト・モデル) を実装します。COMCreateObject を呼び出すことで、階層のルート・オブジェクトのインターフェイスへのポインターを取得できます。ルート・オブジェクトのメソッドとプロパティーは、その子オブジェクトへのポインターを取得するために使用され、また、その子オブジェクトのメソッドとプロパティーは、階層のさらに下にある子オブジェクトへのポインターを取得するために使用されます。

すべてのオブジェクトは、IUnknown インターフェイスを実装しなければなりません。また、その他のインターフェイスも 1 つ以上実装します。COMQueryInterface サブルーチンを使用することによって、任意のオブジェクト・インターフェイスのポインターから、すべてのオブジェクト・インターフェイスへのポインターを常に取得できます。モジュールウィザードによって生成されたルーチンを呼び出す際は、適切なオブジェクト・インターフェイスへのポインターを取得することが重要になります。適切なポインターを取得しないと、アプリケーションが予期しない結果で終了する可能性が高くなります。

オブジェクト・インターフェイスへのポインターを解放する

オブジェクト・インターフェイスのポインターを使用する作業が終了したら、そのポインターを指定して COMReleaseObject を呼び出す必要があります。COMCreateObject、COMQueryInterface、またはオブジェクトのメソッドを呼び出して取得したオブジェクト・ポインターが対象となります。