次の方法で共有


IMarshal::ReleaseMarshalData メソッド (objidl.h)

マーシャリングされたデータ パケットを破棄します。

構文

HRESULT ReleaseMarshalData(
  [in] IStream *pStm
);

パラメーター

[in] pStm

破棄されるデータ パケットを含むストリームへのポインター。

戻り値

このメソッドは、 IStream インターフェイスのストリーム アクセス エラーと同様に、S_OKおよびE_FAIL標準の戻り値を返すことができます。

注釈

オブジェクトのマーシャリングされたデータ パケットがクライアント プロセス空間でマーシャリングされず、パケットが不要になった場合、クライアントはプロキシの IMarshal 実装で ReleaseMarshalData を呼び出して、データ パケットを破棄するようにオブジェクトに指示します。 呼び出しは 、CoReleaseMarshalData 関数内で行われます。 データ パケットは オブジェクトの追加の参照として機能し、データを解放することは 、Release を呼び出してインターフェイス ポインターを解放するようなものです。

マーシャリングされたデータ パケットが何らかの形でクライアント プロセスに到着しない場合、または ReleaseMarshalData がプロキシで正常に再作成されない場合、COM はオブジェクト自体でこのメソッドを呼び出すことができます。

呼び出し元へのメモ

このメソッドを自分で呼び出す機会がない場合は、めったにありません。 IMarshal も実装しているクラス オブジェクトのクラス ファクトリに IMarshal を実装すると、例外が発生する可能性があります。 この場合、オブジェクトを複数のクライアントによって取得できるテーブルにマーシャリングする場合は、マーシャリング解除ルーチンの一部として ReleaseMarshalData を呼び出して、各プロキシのデータ パケットを解放できます。

実装者へのメモ

実装にマーシャリングされたデータ パケットに関する状態情報が格納されている場合は、このメソッドを使用して 、pStm で表されるデータ パケットに関連付けられている状態情報を解放できます。 実装では、データの最後のバイトを超えてストリーム内にシーク ポインターを配置する必要もあります。

要件

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

こちらもご覧ください

CoReleaseMarshalData

IMarshal