共用方式為


IMarshal::UnmarshalInterface 方法 (objidl.h)

取消連接介面指標。

語法

HRESULT UnmarshalInterface(
  [in]  IStream *pStm,
  [in]  REFIID  riid,
  [out] void    **ppv
);

參數

[in] pStm

介面指標要從中取消封存的數據流指標。

[in] riid

要取消封入之介面標識碼的參考。

[out] ppv

接收介面指標指標指標的指標的指標變數位址。 成功傳回時,*ppv 包含要取消封送之介面的要求介面指標。

傳回值

這個方法可以傳回標準傳回值E_FAIL,以及下列值。

傳回碼 描述
S_OK
介面指標已成功解除封入。
E_NOINTERFACE
不支援指定的介面。

備註

執行取消封存的程式中的 COM 連結庫會呼叫 Proxy 的這個方法實作。

來電者附註

您不能直接呼叫此方法, 不過,在某些情況下,您可能會透過 呼叫 CoUnmarshalInterface 間接呼叫它。 例如,如果您要實作存根,則實作會在 Stub 收到介面指標做為方法呼叫中的參數時呼叫 CoUnmarshalInterface

實作者的注意事項

Proxy 的實作應該讀取原始物件的 IMarshal::MarshalInterface 實作寫入數據流的數據,並使用該數據來初始化封送處理存根對原始物件的 IMarshal::GetUnmarshalClass 實作所傳回之 CLSID 的 Proxy 物件。

若要傳回適當的介面指標,Proxy 實作可以直接在本身上呼叫 QueryInterface ,並傳遞 riidppv 參數。 不過, 您的 UnmarshalInterface 實作是免費的,可以建立不同的物件,並視需要傳回它的指標。

在結束之前,即使結束時發生錯誤,您的實作應該在讀取最後一個字節的數據之後,立即重新定位數據流中的搜尋指標。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 objidl.h (包含 ObjIdl.h)

另請參閱

CoUnmarshalInterface

IMarshal