CoReleaseMarshalData 関数 (combaseapi.h)
以前にマーシャリングされたデータ パケットを破棄します。
構文
HRESULT CoReleaseMarshalData(
[in] LPSTREAM pStm
);
パラメーター
[in] pStm
破棄されるデータ パケットを含むストリームへのポインター。 「IStream」を参照してください。
戻り値
この関数は、E_FAIL、E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTEDの標準戻り値と、次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
データ パケットが正常に破棄されました。 |
|
pStm パラメーターに関連するエラー。 |
|
CoInitialize 関数または OleInitialize 関数は、この関数が呼び出される前に、現在のスレッドで呼び出されませんでした。 |
注釈
重要
セキュリティに関する注意: 信頼されていないデータを使用してこのメソッドを呼び出すと、セキュリティ上のリスクがあります。 このメソッドは信頼されたデータでのみ呼び出してください。
- 関数は、ストリームから CLSID を読み取ります。
- COM の既定のマーシャリング実装が使用されている場合、関数は標準の unmarshaler のインスタンスへの IMarshal ポインターを取得します。 カスタム マーシャリングを使用している場合、 関数は CoCreateInstance 関数を呼び出してプロキシを作成し、ストリームから読み取った CLSID を渡し、新しく作成されたプロキシへの IMarshal インターフェイス ポインターを要求します。
- 取得した IMarshal インターフェイス ポインターを使用して、関数は IMarshal::ReleaseMarshalData を呼び出します。
- データ パケットのマーシャリングを解除しようとしましたが、失敗しました。
- マーシャリングされたデータ パケットがグローバル テーブルから削除されました。
CoUnmarshalInterface 関数の呼び出しが成功した後、CoReleaseMarshalData を呼び出す必要はありません。その関数は、マーシャリング データを処理の一部として解放します。
大事なCoMarshalInterface を呼び出したのと同じアパートメントで CoReleaseMarshalData 関数を呼び出して、オブジェクトをストリームにマーシャリングする必要があります。 これを行わないと、ストリーム内のマーシャリングされたパケットによって保持されているオブジェクト参照がリークされる可能性があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | combaseapi.h (Objbase.h を含む) |
Library | Ole32.lib |
[DLL] | Ole32.dll |