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, out] 参数的 [In] 版本存在时,并且 [out] 版本未定义。 封送 [out] 参数时,值有效。

如果此方法返回错误,则调用方将无法清理它。 已释放资源,例如在尝试封送期间暂时分配的内存。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 callobj.h

另请参阅

ICallFrame