IMarshal::ReleaseMarshalData 方法 (objidl.h)

销毁封送数据包。

语法

HRESULT ReleaseMarshalData(
  [in] IStream *pStm
);

参数

[in] pStm

指向包含要销毁的数据包的流的指针。

返回值

此方法可以返回S_OK和E_FAIL的标准返回值,以及 IStream 接口的任何流访问错误。

注解

如果对象的封送数据包未在客户端进程空间中取消封送,并且不再需要该数据包,则客户端在代理的 IMarshal 实现上调用 ReleaseMarshalData,以指示对象销毁数据包。 调用发生在 CoReleaseMarshalData 函数中。 数据包充当对象上的附加引用,释放数据就像通过调用 Release 释放接口指针一样。

如果封送的数据包未以某种方式到达客户端进程,或者如果在代理中未成功重新创建 ReleaseMarshalData,COM 可以在对象本身上调用此方法。

给调用方的说明

你很少有机会自己调用此方法。 一个可能的例外是,如果要在类工厂上为同时实现 IMarshal 的类对象实现 IMarshal。 在这种情况下,如果要将对象封送到多个客户端可以检索到的表中,则可以在取消封送例程中调用 ReleaseMarshalData 来释放每个代理的数据包。

实施者说明

如果实现存储有关封送数据包的状态信息,则可以使用此方法释放与 pStm 表示的数据包关联的状态信息。 实现还应将查找指针放置在流中超过最后一个数据字节的位置。

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 objidl.h (包括 ObjIdl.h)

另请参阅

CoReleaseMarshalData

IMarshal