次の方法で共有


IBindCtx::RegisterObjectBound メソッド (objidl.h)

バインド コンテキストにオブジェクトを登録して、バインド コンテキストが解放されるまでオブジェクトがアクティブなままになるようにします。

構文

HRESULT RegisterObjectBound(
  [in] IUnknown *punk
);

パラメーター

[in] punk

バインドとして登録されているオブジェクトの IUnknown インターフェイスへのポインター。

戻り値

このメソッドは、E_OUTOFMEMORYおよびS_OK標準の戻り値を返すことができます。

注釈

( IMoniker インターフェイスの実装を通じて) 新しいモニカー クラスを記述するユーザーは、実装が オブジェクトをアクティブ化するたびに、このメソッドを呼び出す必要があります。 これは、モニカーをバインドする過程で最も頻繁に発生しますが、モニカーの表示名を取得したり、表示名をモニカーに解析したり、オブジェクトが最後に変更された時刻を取得したりするときにも発生する可能性があります。

RegisterObjectBound はAddRef を呼び出して、オブジェクトへの追加の参照を作成します。 ただし、ポインターの独自のコピーを解放する必要があります。 同じオブジェクトに対してこのメソッドを 2 回呼び出すと、そのオブジェクトへの 2 つの参照が作成されます。 IBindCtx::RevokeObjectBound を呼び出すことで、このメソッドの呼び出しによって取得された参照を解放できます。 バインド コンテキストによって保持されているすべての参照は、バインド コンテキスト自体が解放されると解放されます。

RegisterObjectBound を呼び出して、バインド コンテキストにオブジェクトを登録すると、バインド コンテキストが解放されるまでオブジェクトはアクティブな状態を維持します。 後続のバインド操作 (同じ複合モニカーの別の部分または別のモニカーの場合) でバインド コンテキストを再利用すると、そのオブジェクトを再読み込みする必要がないため、後続のバインド操作の効率を高めることができます。 ただし、これは、後続のバインド操作で元のオブジェクトと同じオブジェクトの一部が必要な場合にのみパフォーマンスが向上するため、バインド コンテキストを再利用する場合のパフォーマンス向上と、オブジェクトを不必要にアクティブ化し続けるコストとのバランスを取る必要があります。

IBindCtx には、 RegisterObjectBound を使用して登録されたオブジェクトへのポインターを取得するメソッドは用意されていません。 オブジェクトが実行中のオブジェクト テーブルに登録されていると仮定すると、モニカーの実装では IRunningObjectTable::GetObject を呼び出してオブジェクトへのポインターを取得できます。

要件

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

こちらもご覧ください

Ibindctx

IRunningObjectTable::GetObject