função IUnknown_Set (shlwapi.h)

Altera o valor de um ponteiro de interface COM (Component Object Model) e libera a interface anterior.

Sintaxe

void IUnknown_Set(
  [in, out]      IUnknown **ppunk,
  [in, optional] IUnknown *punk
);

Parâmetros

[in, out] ppunk

Tipo: IUnknown**

O endereço de um ponteiro de interface COM para receber o ponteiro atribuído ao punk. Se o valor anterior do ponteiro não for NULL, a função liberará essa interface chamando seu método IUnkown::Release.

[in, optional] punk

Tipo: IUnknown*

O ponteiro de interface a ser copiado para ppunk. Se o valor não for NULL, a função incrementará a contagem de referência da interface.

Valor retornado

Nenhum

Comentários

Essa função imita o comportamento de um ponteiro inteligente. Conceitualmente, a função faz o seguinte:

  • Libera a interface original, se ppunk não for NULL
  • Atribui punk a ppunk
  • Chama IUnknown::AddRef na interface apontada pelo punk, se punk não for NULL.

Exemplos


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
}

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional, Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server, Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho shlwapi.h
DLL Shlwapi.dll (versão 5.0 ou posterior)