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,以及要求新建立 Proxy的 IMarshal 介面指標來建立 Proxy。
- 使用它取得的 IMarshal 介面指標,函式會呼叫 IMarshal::ReleaseMarshalData。
- 嘗試取消封包的封包,但失敗。
- 封送處理的數據封包已從全域數據表中移除。
請注意,在成功呼叫 CoUnmarshalInterface 函式之後,您不需要呼叫 CoReleaseMarshalData;該函式會在處理時釋放封送處理數據。
重要您必須在呼叫 CoMarshalInterface 的相同 Apartment 中呼叫 CoReleaseMarshalData 函式,才能將物件封送處理至數據流。 如果無法這樣做,可能會導致數據流中封送處理封包所保留的對象參考遭到外洩。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows 2000 Server [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | combaseapi.h (包含 Objbase.h) |
程式庫 | Ole32.lib |
Dll | Ole32.dll |