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) |