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 |