ICallFrame::Marshal 方法 (callobj.h)

將可連線的資料轉換成平面緩衝區,而不會干擾框架,封送處理呼叫框架。

語法

HRESULT Marshal(
  [in]  CALLFRAME_MARSHALCONTEXT *pmshlContext,
  [in]  MSHLFLAGS                mshlflags,
  [in]  PVOID                    pBuffer,
  [in]  ULONG                    cbBuffer,
  [out] ULONG                    *pcbBufferUsed,
  [out] RPCOLEDATAREP            *pdataRep,
  [out] ULONG                    *prpcFlags
);

參數

[in] pmshlContext

包含如何執行封送處理之內容資訊的 CALLFRAME_MARSHALCONTEXT 結構的指標。

[in] mshlflags

旗標,指出要封送處理的資料是否要傳輸回用戶端進程 - 一般案例 - 或寫入至全域資料表,其中可由多個用戶端擷取。 可能的值為來自 MSHLFLAGS 列舉。

[in] pBuffer

要放置封送處理資料的緩衝區指標。

[in] cbBuffer

緩衝區的大小,以位元組為單位。

[out] pcbBufferUsed

接收實際使用的緩衝區大小。 這是選擇性參數。

[out] pdataRep

接收封送處理資料的 NDR 資料標記法。 這是選擇性參數。 如需詳細資訊,請參閱 IRpcChannelBuffer::GetBuffer

[out] prpcFlags

接收與呼叫相關聯的 RPC 旗標。 這是選擇性參數。 如需詳細資訊,請參閱 IRpcChannelBuffer::GetBuffer

傳回值

這個方法可以傳回下列值。

傳回碼 描述
S_OK
已成功完成命令。
E_UNEXPECTED
已發生未預期的錯誤。

備註

封送處理 [in] 版本的 [in, out] 參數時,且 [out] 版本未定義。 封送處理 [out] 參數時,值是有效的。

如果這個方法傳回錯誤,呼叫端將無法加以清除。 已釋放嘗試封送處理期間暫時配置的記憶體等資源。

規格需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 callobj.h

另請參閱

ICallFrame