Freigeben über


Implementieren der IUnknown-Schnittstelle

Gilt für: Outlook 2013 | Outlook 2016

Die Methoden der IUnknown-Schnittstelle , die in jedem MAPI-Objekt implementiert sind, unterstützen die Kommunikation zwischen Objekten und die Objektverwaltung.

IUnknown verfügt über drei Methoden: IUnknown::AddRef, IUnknown::QueryInterface und IUnknown::Release. QueryInterface ermöglicht es einem Objekt zu bestimmen, ob ein anderes Objekt eine bestimmte Schnittstelle unterstützt. Mit QueryInterface können zwei Objekte ohne Vorkenntnisse über die Funktionalität des jeweils anderen interagieren. Wenn das Objekt, das QueryInterface implementiert, die betreffende Schnittstelle unterstützt, wird ein Zeiger auf die Implementierung der Schnittstelle zurückgegeben. Wenn das Objekt die angeforderte Schnittstelle nicht unterstützt, wird der MAPI_E_INTERFACE_NOT_SUPPORTED Wert zurückgegeben.

Wenn QueryInterface einen angeforderten Schnittstellenzeiger zurückgibt, muss auch die Verweisanzahl des neuen Objekts erhöht werden. Die Verweisanzahl eines Objekts ist ein numerischer Wert, der zum Verwalten der Lebensdauer des Objekts verwendet wird. Wenn die Verweisanzahl größer als 1 ist, kann der Speicher des Objekts nicht freigegeben werden, da er aktiv verwendet wird. Erst wenn die Verweisanzahl auf 0 sinkt, kann das Objekt sicher freigegeben werden.

Die beiden anderen IUnknown-MethodenAddRef und Release verwalten die Verweisanzahl. AddRef erhöht die Verweisanzahl, während Release sie verringert. Alle Methoden oder API-Funktionen, die Schnittstellenzeiger zurückgeben, z. B. QueryInterface, müssen AddRef aufrufen, um die Verweisanzahl zu erhöhen. Alle Implementierungen von Methoden, die Schnittstellenzeiger empfangen, müssen Release aufrufen, um die Anzahl zu verringern, wenn der Zeiger nicht mehr benötigt wird. Release überprüft eine vorhandene Verweisanzahl, wobei der der Schnittstelle zugeordnete Arbeitsspeicher nur freigegeben wird, wenn die Anzahl 0 ist.

Hinweis

Da AddRef und Release nicht erforderlich sind, um genaue Werte zurückzugeben, dürfen Aufrufer dieser Methoden die Rückgabewerte nicht verwenden, um zu bestimmen, ob ein Objekt noch gültig ist oder zerstört wurde.

Siehe auch

Implementieren von MAPI-Objekten