IUnknown_Set 函数 (shlwapi.h)
(COM) 接口指针更改组件对象模型的值,并释放上一个接口。
语法
void IUnknown_Set(
[in, out] IUnknown **ppunk,
[in, optional] IUnknown *punk
);
参数
[in, out] ppunk
类型: IUnknown**
用于接收分配给 punk 的指针的 COM 接口指针的地址。 如果指针的上一个值为非 NULL,则该函数通过调用其 IUnkown::Release 方法释放该接口。
[in, optional] punk
类型: IUnknown*
要复制到 ppunk 的接口指针。 如果值为非 NULL,则该函数将递增接口的引用计数。
返回值
无
备注
此函数模拟智能指针的行为。 从概念上讲, 函数执行以下操作:
- 如果 ppunk 为非 NULL,则释放原始接口
- 将 朋克 分配给 ppunk
- 如果 punk 为非 NULL,请在 punk 指向的接口上调用 IUnknown::AddRef。
示例
void sample()
{
IUnknown *punk = NULL;
IStream* pstm = NULL;
if (SUCCEEDED(CreateStreamOnHGlobal(NULL, TRUE, &pstm)) {
// since punk == NULL, this merely copies the value and AddRef()s it
IUnknown_Set(&punk, pstm);
pstm->Release();
if (SUCCEEDED(CreateStreamOnHGlobal(NULL, TRUE, &pstm)) {
// this call will release the old value of punk before copying the
// new value and AddRef()ing it
IUnknown_Set(&punk, pstm);
pstm->Release();
}
}
// This call will release whatever punk points to, if anything.
IUnknown_AtomcRelease((void**)&punk);
// at this point, punk == NULL
}
要求
最低受支持的客户端 | Windows 2000 专业版、Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server、Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | shlwapi.h |
DLL | Shlwapi.dll (5.0 或更高版本) |