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 Professional、Windows XP [僅限桌面應用程式] |
最低支援的伺服器 | Windows 2000 Server、Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | shlwapi.h |
Dll | Shlwapi.dll (5.0 版或更新版本) |