次の方法で共有


CoSwitchCallContext 関数 (combaseapi.h)

CoGetCallContext で使用される呼び出しコンテキスト オブジェクトを切り替えます。

構文

HRESULT CoSwitchCallContext(
  [in, optional] IUnknown *pNewObject,
  [out]          IUnknown **ppOldObject
);

パラメーター

[in, optional] pNewObject

新しい呼び出しコンテキスト オブジェクト上のインターフェイスへのポインター。 COM は、 CoSwitchCallContext が別のオブジェクトで呼び出されるまで、ポインターへの参照を追加せずにこのポインターを格納します。 元の呼び出しコンテキストに切り替えるために CoSwitchCallContext を呼び出しているが、元の呼び出しコンテキストがなかった場合、このパラメーターは NULL になる可能性があります。

[out] ppOldObject

現在進行中の呼び出しの呼び出しコンテキスト オブジェクトへのポインターを受け取るポインター変数のアドレス。 この値は、カスタム マーシャラーによって元の呼び出しコンテキストを復元できるように返されます。 実行中の呼び出しがない場合、返されるポインターは NULL になります。

戻り値

この関数は、次の値を返すことができます。

リターン コード 説明
S_OK
関数は成功しました。
E_OUT_OF_MEMORY
メモリが不足しています。

解説

カスタム マーシャラーは CoSwitchCallContext を呼び出して、 CoGetCallContext 関数で使用される呼び出しコンテキスト オブジェクトを変更します。 着信呼び出しをディスパッチする前に、カスタム マーシャラーは新しいコンテキスト オブジェクトを指定して CoSwitchCallContext を呼び出します。 応答を送信した後、 CoSwitchCallContext をもう一度呼び出して元の呼び出しコンテキストを復元する必要があります。今度は、元のコンテキスト オブジェクトへのポインターを渡します。

CoSwitchCallContext では、新しいコンテキスト オブジェクトへの参照は追加されません。 カスタム マーシャラーは、コンテキスト オブジェクトの有効期間が、呼び出しの間、および元のコンテキストを復元するための呼び出しまで継続する必要があります。 カスタム マーシャラーは、コンテキストを設定するときに ppOldObject パラメーターに配置した値を解放しないでください。

カスタム マーシャラーによって提供される呼び出しコンテキスト オブジェクトは 、IServerSecurity インターフェイスをサポートする必要があります。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー combaseapi.h (Objbase.h を含む)
Library Ole32.lib
[DLL] Ole32.dll

関連項目

CoGetCallContext

IServerSecurity

COM のセキュリティ