CoGetMarshalSizeMax 函式 (combaseapi.h)
傳回將指定介面指標封送處理至指定物件所需的位元組數目上限。
語法
HRESULT CoGetMarshalSizeMax(
[out] ULONG *pulSize,
[in] REFIID riid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwDestContext,
[in, optional] LPVOID pvDestContext,
[in] DWORD mshlflags
);
參數
[out] pulSize
要寫入封送處理數據流之數據封包大小上限值的指標,以位元組為單位。 如果此參數為 0,封包的大小為未知。
[in] riid
要封送處理其指標之介面標識符的參考。 此介面必須衍生自 IUnknown 介面。
[in] pUnk
要封送處理之介面的指標。 此介面必須衍生自 IUnknown 介面。
[in] dwDestContext
指定介面的目的地內容,其為未隔離。 dwDestContext 的值來自列舉 MSHCTX。
[in, optional] pvDestContext
此參數是保留的,而且必須是 NULL。
[in] mshlflags
指出要封送處理的數據是要傳輸回用戶端處理一般案例,還是寫入全域數據表,以便由多個用戶端擷取。 值來自列舉 MSHLFLAGS。
傳回值
此函式可以傳回標準傳回值E_UNEXPECTED,以及下列值。
傳回碼 | 描述 |
---|---|
|
已成功傳回上限。 |
|
必須先呼叫 CoInitialize 或 OleInitialize 函式,才能呼叫此函式。 |
備註
此函式會執行下列工作:
- 查詢 IMarshal 指標的物件,如果物件未實作 IMarshal,則會取得 COM 標準封送處理器的指標。
- 使用在上述專案中取得的指標,呼叫 IMarshal::GetMarshalSizeMax。
- 將 加入 GetMarshalSizeMax 呼叫所傳回的值,封送處理數據標頭的大小,而且可能是 Proxy CLSID 的大小,以位元組為單位取得要寫入封送處理數據流的數據量上限。
只要封送處理的對象內部狀態不會變更,這個方法所傳回的值才保證有效。 因此,在傳回此函式之後,應該立即完成實際的封送處理,或者存根會因為狀態變更而執行對象的風險,可能需要比原本指出更多的記憶體進行封送處理。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows 2000 Server [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | combaseapi.h (包含 Objbase.h) |
程式庫 | Ole32.lib |
Dll | Ole32.dll |