CoGetMarshalSizeMax 函数 (combaseapi.h)
返回指定接口指针封送至指定对象的字节数上限。
语法
HRESULT CoGetMarshalSizeMax(
[out] ULONG *pulSize,
[in] REFIID riid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwDestContext,
[in, optional] LPVOID pvDestContext,
[in] DWORD mshlflags
);
参数
[out] pulSize
指向要写入封送处理流的数据包的大小(以字节为单位)的上限值的指针。 如果此参数为 0,则数据包的大小未知。
[in] riid
对要封送其指针的接口标识符的引用。 此接口必须派生自 IUnknown 接口。
[in] pUnk
指向要封送的接口的指针。 此接口必须派生自 IUnknown 接口。
[in] dwDestContext
要取消对指定接口进行封送的目标上下文。 dwDestContext 的值来自枚举 MSHCTX。
[in, optional] pvDestContext
此参数是保留的,必须为 NULL。
[in] mshlflags
指示要封送的数据是按照正常情况传输回客户端处理,还是写入全局表,其中的多个客户端可以检索这些数据。 值来自枚举 MSHLFLAGS。
返回值
此函数可以返回标准返回值E_UNEXPECTED,以及以下值。
返回代码 | 说明 |
---|---|
|
已成功返回上限。 |
|
在调用此函数之前,必须调用 CoInitialize 或 OleInitialize 函数。 |
注解
此函数执行以下任务:
- 查询 对象以获取 IMarshal 指针,或者,如果该对象未实现 IMarshal,则获取指向 COM 的标准封送处理程序的指针。
- 使用在上一项中获取的指针调用 IMarshal::GetMarshalSizeMax。
- 将调用 GetMarshalSizeMax 返回的值加上封送处理数据标头的大小以及代理 CLSID 的大小,以获取要写入封送处理流的数据量的最大大小(以字节为单位)。
只要要封送的对象的内部状态不更改,此方法返回的值才保证有效。 因此,应在此函数返回后立即执行实际的封送处理,否则存根存在对象由于状态发生某些更改而可能需要比最初指示更多的内存进行封送处理的风险。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 专业版 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows 2000 Server [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | combaseapi.h (包括 Objbase.h) |
Library | Ole32.lib |
DLL | Ole32.dll |