функция IUnknown_Set (shlwapi.h)
Изменяет значение указателя интерфейса COM и освобождает предыдущий интерфейс.
Синтаксис
void IUnknown_Set(
[in, out] IUnknown **ppunk,
[in, optional] IUnknown *punk
);
Параметры
[in, out] ppunk
Тип: IUnknown**
Адрес указателя COM-интерфейса для получения указателя, назначенного punk. Если предыдущее значение указателя не равно NULL, функция освобождает этот интерфейс путем вызова метода IUnkown::Release.
[in, optional] punk
Тип: IUnknown*
Указатель интерфейса для копирования в ppunk. Если значение не равно NULL, функция увеличивает число ссылок интерфейса.
Возвращаемое значение
None
Remarks
Эта функция имитирует поведение интеллектуального указателя. По сути, функция выполняет следующие действия:
- Освобождает исходный интерфейс, если ppunk имеет значение, отличное от NULL
- Назначает панк-файлу
- Вызывает IUnknown::AddRef в интерфейсе, на который указывает панк, если панк не равен NULL.
Примеры
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 |
Header | shlwapi.h |
DLL | Shlwapi.dll (версия 5.0 или более поздняя) |