ICallUnmarshal::ReleaseMarshalData 方法 (callobj.h)

释放可能由驻留在封送数据包中的接口指针持有的资源。 此方法查找数据包中的所有接口指针,并调用每个接口指针上的 CoReleaseMarshalData 函数。

语法

HRESULT ReleaseMarshalData(
  [in] ULONG                    iMethod,
  [in] PVOID                    pBuffer,
  [in] ULONG                    cbBuffer,
  [in] ULONG                    ibFirstRelease,
  [in] RPCOLEDATAREP            dataRep,
  [in] CALLFRAME_MARSHALCONTEXT *pcontext
);

参数

[in] iMethod

方法编号。

[in] pBuffer

指向包含封送输出参数的缓冲区的指针。

[in] cbBuffer

缓冲区的大小(以字节为单位)。

[in] ibFirstRelease

缓冲区中要释放的第一个字节。 值为零意味着将释放整个缓冲区中的接口指针。 其思路是,假定已由其他某种机制释放指定字节之前的封送接口指针。

[in] dataRep

用于封送数据的数据表示形式。

[in] pcontext

指向 CALLFRAME_MARSHALCONTEXT 结构的指针,该结构包含有关要执行取消封送的上下文的信息。

返回值

此方法可以返回以下值。

返回代码 说明
S_OK
该方法已成功完成。
E_UNEXPECTED
发生意外错误。

注解

若要清理封送缓冲区中保留的资源,必须调用 ReleaseMarshalData 方法。 但是,如果 MSHLFLAGS 枚举设置为“正常”,则会在取消组合时自动完成此操作。

ReleaseMarshalData 可用于封送入参数和输出参数。

要求

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

另请参阅

ICallUnmarshal