Partager via


fonction IUnknown_Set (shlwapi.h)

Modifie la valeur d’un pointeur d’interface COM (Component Object Model) et libère l’interface précédente.

Syntaxe

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

Paramètres

[in, out] ppunk

Type : IUnknown**

Adresse d’un pointeur d’interface COM pour recevoir le pointeur affecté à punk. Si la valeur précédente du pointeur est non NULL, la fonction libère cette interface en appelant sa méthode IUnkown::Release.

[in, optional] punk

Type : IUnknown*

Pointeur d’interface à copier vers ppunk. Si la valeur n’est pas NULL, la fonction incrémente le nombre de références de l’interface.

Valeur de retour

None

Remarques

Cette fonction imite le comportement d’un pointeur intelligent. Conceptuellement, la fonction effectue les opérations suivantes :

  • Libère l’interface d’origine, si ppunk n’est pas NULL
  • Assigne le punk au ppunk
  • Appelle IUnknown::AddRef sur l’interface pointée vers punk, si punk n’a pas la valeur NULL.

Exemples


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
}

Configuration requise

   
Client minimal pris en charge Windows 2000 Professionnel, Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server, Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête shlwapi.h
DLL Shlwapi.dll (version 5.0 ou ultérieure)