IMarshal::UnmarshalInterface 方法 (objidl.h)
取消連接介面指標。
語法
HRESULT UnmarshalInterface(
[in] IStream *pStm,
[in] REFIID riid,
[out] void **ppv
);
參數
[in] pStm
介面指標要從中取消封存的數據流指標。
[in] riid
要取消封入之介面標識碼的參考。
[out] ppv
接收介面指標指標指標的指標的指標變數位址。 成功傳回時,*ppv 包含要取消封送之介面的要求介面指標。
傳回值
這個方法可以傳回標準傳回值E_FAIL,以及下列值。
傳回碼 | 描述 |
---|---|
|
介面指標已成功解除封入。 |
|
不支援指定的介面。 |
備註
執行取消封存的程式中的 COM 連結庫會呼叫 Proxy 的這個方法實作。
來電者附註
您不能直接呼叫此方法, 不過,在某些情況下,您可能會透過 呼叫 CoUnmarshalInterface 間接呼叫它。 例如,如果您要實作存根,則實作會在 Stub 收到介面指標做為方法呼叫中的參數時呼叫 CoUnmarshalInterface 。實作者的注意事項
Proxy 的實作應該讀取原始物件的 IMarshal::MarshalInterface 實作寫入數據流的數據,並使用該數據來初始化封送處理存根對原始物件的 IMarshal::GetUnmarshalClass 實作所傳回之 CLSID 的 Proxy 物件。若要傳回適當的介面指標,Proxy 實作可以直接在本身上呼叫 QueryInterface ,並傳遞 riid 和 ppv 參數。 不過, 您的 UnmarshalInterface 實作是免費的,可以建立不同的物件,並視需要傳回它的指標。
在結束之前,即使結束時發生錯誤,您的實作應該在讀取最後一個字節的數據之後,立即重新定位數據流中的搜尋指標。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows 2000 Server [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | objidl.h (包含 ObjIdl.h) |