次の方法で共有


IMarshal::D isconnectObject メソッド (objidlbase.h)

オブジェクトへのすべての接続を解放します。 オブジェクトのサーバーは、シャットダウン前に、このメソッドのオブジェクトの実装を呼び出します。

構文

HRESULT DisconnectObject(
  [in] DWORD dwReserved
);

パラメーター

[in] dwReserved

このパラメーターは予約済みであり、0 である必要があります。

戻り値

メソッドが成功した場合、戻り値はS_OK。 それ以外の場合は、E_FAIL。

注釈

このメソッドは、プロキシではなく オブジェクトに実装されます。

呼び出し元へのメモ

このメソッドが呼び出される通常のケースは、 IMarshal を実装する 1 つ以上の実行中のオブジェクトを持つ COM サーバーをエンド ユーザーが強制的に閉じるときに発生します。 シャットダウンする前に、サーバーは CoDisconnectObject 関数を呼び出して、実行中のすべてのオブジェクトへの外部接続を解放します。 ただし、 IMarshal を実装するオブジェクトごとに、この関数は DisconnectObject を 呼び出して、独自のマーシャリングを管理する各オブジェクトが、シャットダウンしようとしていることをプロキシに通知する手順を実行できるようにします。

実装者へのメモ

通常のシャットダウン コードの一部として、サーバーは CoDisconnectObject を呼び出す必要があります。これにより、IMarshal を実装する実行中の各オブジェクトで DisconnectObject が呼び出されます。

このメソッドの実装の結果は、プロキシが元のオブジェクトに呼び出しを転送するのではなく、RPC_E_DISCONNECTEDまたはCO_E_OBJNOTCONNECTEDを返すことによって、クライアントからの後続のすべての呼び出しに応答できるようにする必要があります。 プロキシを破棄するのはクライアント次第です。

モニカーなどの不変オブジェクトに対してこのメソッドを実装する場合、通常、そのようなオブジェクトはクライアントのアドレス空間に全体がコピーされるため、実装では何もする必要はありません。 そのため、プロキシも元のオブジェクトへの接続もありません。 変更できないオブジェクトのマーシャリングの詳細については、 IMarshal トピックの「実装するタイミング」セクションを参照してください。

要件

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

こちらもご覧ください

CoDisconnectObject

IMarshal