以下是 CoUnmarshalInterface 函数的声明:
HRESULT CoUnmarshalInterface(
_In_reads_bytes_(cb) IStream *pStm,
_In_ REFIID riid,
_COM_Outptr_ void **ppv
);
参数说明:
- pStm: 指向包含序列化数据的 IStream 接口的指针。
- riid: 用于指定所需接口的标识符。
- ppv: 接收反序列化后的接口指针的地址。
返回值说明:
- 如果函数调用成功,返回 S_OK。
- 如果函数调用失败,返回相应的错误码。
使用示例:
#include <Objbase.h>
// ...
IStream *pStream = /* 通过某种方式获取包含序列化数据的 IStream 指针 */;
// 指定所需接口的标识符
IID iid = /* 接口的标识符 */;
// 接收反序列化后的接口指针的地址
void *ppv = nullptr;
// 反序列化接口
HRESULT hr = CoUnmarshalInterface(pStream, iid, &ppv);
if (SUCCEEDED(hr)) {
// 使用反序列化后的接口指针
// ...
// 释放接口指针
((IUnknown*)ppv)->Release();
} else {
// 处理错误
}
CoUnmarshalInterface 通常用于从序列化数据中还原接口指针,以便在分布式环境中传递对象。在使用完接口指针后,记得调用 Release 方法释放资源。
转载请注明出处:http://www.pingtaimeng.com/article/detail/24593/Win32 API/Combaseapi.h/CoUnmarshalInterface