次の方法で共有


IGlobalInterfaceTable インターフェイス (objidl.h)

プロセス内の任意のアパートメントが、プロセス内の他のアパートメント内のオブジェクトに実装されているインターフェイスにアクセスできるようにします。

継承

IGlobalInterfaceTable インターフェイスは、IUnknown インターフェイスから継承されます。 IGlobalInterfaceTable には、次の種類のメンバーもあります。

メソッド

IGlobalInterfaceTable インターフェイスには、これらのメソッドがあります。

 
IGlobalInterfaceTable::GetInterfaceFromGlobal

呼び出し元のアパートメントで使用できるオブジェクトのインターフェイスへのポインターを取得します。 このインターフェイスは、現在グローバル インターフェイス テーブルに登録されている必要があります。
IGlobalInterfaceTable::RegisterInterfaceInGlobal

プロセスの 1 つのアパートメントに存在するオブジェクトに指定されたインターフェイスをグローバル インターフェイスとして登録し、そのインターフェイスへの他のアパートメント アクセスを有効にします。
IGlobalInterfaceTable::RevokeInterfaceFromGlobal

グローバル インターフェイス テーブル内のインターフェイスの登録を取り消します。

解説

IGlobalInterfaceTable インターフェイスは、プロセス全体の変数や、他のオブジェクトへのインターフェイス ポインターを含むアジャイル (フリー スレッドマーシャリング) オブジェクトなど、プロセス内の複数のアパートメントからアクセスできるメモリ位置に、プロセスがインターフェイス ポインターを格納するための効率的な方法です。

アジャイル オブジェクトは、それが実行されている基になる COM インフラストラクチャ (つまり、実行されているアパートメント、コンテキスト、スレッド) を認識します。 オブジェクトは、アパートメントまたはコンテキストに固有のインターフェイスを保持している可能性があります。 このため、アジャイル コンポーネントが実行されている場所からこれらのインターフェイスを呼び出すと、常に正しく機能するとは限りません。 グローバル インターフェイス テーブルは、アジャイル オブジェクトが実行されている場所に基づいて、オブジェクトへの有効なプロキシ (または直接ポインター) が使用されることを保証することで、この問題を回避します。

グローバル インターフェイス テーブルはプロセスまたはマシンの境界を越えて移植できないため、通常のパラメーター渡しメカニズムの代わりに使用することはできません。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー objidl.h