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) |