Freigeben über


IUnknown_Set-Funktion (shlwapi.h)

Ändert den Wert eines COM-Schnittstellenzeigers (Component Object Model) und gibt die vorherige Schnittstelle frei.

Syntax

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

Parameter

[in, out] ppunk

Typ: IUnknown**

Die Adresse eines COM-Schnittstellenzeigers, um den Dem Punk zugewiesenen Zeiger zu empfangen. Wenn der vorherige Wert des Zeigers nicht NULL ist, gibt die Funktion diese Schnittstelle durch Aufrufen der IUnkown::Release-Methode frei.

[in, optional] punk

Typ: IUnknown*

Der Schnittstellenzeiger, der in ppunk kopiert werden soll. Wenn der Wert nicht NULL ist, erhöht die Funktion die Referenzanzahl der Schnittstelle.

Rückgabewert

Keine

Bemerkungen

Diese Funktion imitiert das Verhalten eines intelligenten Zeigers. Konzeptionell führt die Funktion Folgendes aus:

  • Gibt die ursprüngliche Schnittstelle frei, wenn ppunk nicht NULL ist
  • Zuweisen von Punk zu ppunk
  • Ruft IUnknown::AddRef auf der Schnittstelle auf, auf die von Punk verwiesen wird, wenn Punk nicht NULL ist.

Beispiele


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
}

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional, Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server, Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile shlwapi.h
DLL Shlwapi.dll (Version 5.0 oder höher)