Freigeben über


IMAPISupport::MakeInvalid

Gilt für: Outlook 2013 | Outlook 2016

Markiert ein Objekt als nicht verwendbar.

HRESULT MakeInvalid(
ULONG ulFlags,
LPVOID lpObject,
ULONG ulRefCount,
ULONG cMethods
);

Parameter

ulFlags

Reserviert; muss null sein.

lpObject

[in] Ein Zeiger auf das Objekt, das ungültig gemacht werden soll. Die Schnittstelle des Objekts muss von IUnknown abgeleitet werden.

ulRefCount

[in] Die aktuelle Verweisanzahl des Objekts.

cMethods

[in] Die Anzahl der Methoden in der vtable des Objekts.

Rückgabewert

S_OK

Das Objekt wurde erfolgreich als nicht verwendbar markiert.

Hinweise

Die IMAPISupport::MakeInvalid-Methode wird für alle Unterstützungsobjekte implementiert. Das objekt, das ungültig gemacht werden soll, muss von der IUnknown-Schnittstelle oder von einer von IUnknown abgeleiteten Schnittstelle abgeleitet werden.

MakeInvalid markiert ein Objekt als unbrauchbar, indem die vtable des Objekts durch eine Stub-Vtable mit ähnlicher Größe ersetzt wird, in der die Methoden IUnknown::AddRef und IUnknown::Release erwartungsgemäß ausgeführt werden. Alle anderen Methoden schlagen jedoch fehl und geben den Wert MAPI_E_INVALID_OBJECT zurück.

Hinweise für Aufrufer

Dienstanbieter und Nachrichtendienste rufen MakeInvalid in der Regel zum Zeitpunkt des Herunterfahrens auf. MakeInvalid kann jedoch jederzeit aufgerufen werden. Wenn ein Client beispielsweise ein Objekt freigibt, ohne einige seiner Unterobjekte freizugeben, können Sie MakeInvalid sofort aufrufen, um diese Unterobjekte freizugeben.

Sie müssen besitzer des Objekts sein, das Sie für ungültig erklären möchten. Sie muss mindestens 16 Bytes lang sein und mindestens drei Methoden in der vtable enthalten.

Sie können MakeInvalid aufrufen und dann alle Herunterfahrvorgänge ausführen, z. B. das Verwerfen zugeordneter Datenstrukturen, die normalerweise während der Freigabe eines Objekts ausgeführt werden. Code zur Unterstützung des Objekts muss nicht im Arbeitsspeicher gespeichert werden, da MAPI den Arbeitsspeicher durch Aufrufen von MAPIFreeBuffer freigibt und dann das Objekt freigibt. Sie können Ressourcen freigeben, MakeInvalid aufrufen und dann das ungültige Objekt ignorieren.

Siehe auch

MAPIAllocateBuffer

IMAPISupport: IUnknown