Поделиться через


функция 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 или более поздняя)