Compartir a través de


función IUnknown_Set (shlwapi.h)

Cambia el valor de un puntero de interfaz del Modelo de objetos componentes (COM) y libera la interfaz anterior.

Sintaxis

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

Parámetros

[in, out] ppunk

Tipo: IUnknown**

Dirección de un puntero de interfaz COM para recibir el puntero asignado a punk. Si el valor anterior del puntero no es NULL, la función libera esa interfaz llamando al método IUnkown::Release.

[in, optional] punk

Tipo: IUnknown*

Puntero de interfaz que se va a copiar en ppunk. Si el valor no es NULL, la función incrementa el recuento de referencias de la interfaz.

Valor devuelto

None

Observaciones

Esta función imita el comportamiento de un puntero inteligente. Conceptualmente, la función hace lo siguiente:

  • Libera la interfaz original, si ppunk no es NULL
  • Asigna punk a ppunk
  • Llama a IUnknown::AddRef en la interfaz a la que apunta punk, si punk no es NULL.

Ejemplos


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 compatible Windows 2000 Professional, Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server, Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shlwapi.h
Archivo DLL Shlwapi.dll (versión 5.0 o posterior)