Share via


CoDisableCallCancellation-Funktion (combaseapi.h)

Hebt die Aktion eines Aufrufs von CoEnableCallCancellation auf. Deaktiviert den Abbruch synchroner Aufrufe im aufrufenden Thread, wenn alle Aufrufe von CoEnableCallCancellation durch Aufrufe von CoDisableCallCancellation ausgeglichen werden.

Syntax

HRESULT CoDisableCallCancellation(
  [in, optional] LPVOID pReserved
);

Parameter

[in, optional] pReserved

Dieser Parameter ist reserviert und muss NULL sein.

Rückgabewert

Diese Funktion kann die Standardrückgabewerte E_FAIL, E_INVALIDARG, E_OUTOFMEMORY und E_UNEXPECTED sowie die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Die Anrufabbruch wurde im Thread erfolgreich deaktiviert.
CO_E_CANCEL_DISABLED
Es wurden mehr erfolgreiche Aufrufe von CoEnableCallCancellation im Thread als Aufrufe von CoDisableCallCancellation durchgeführt. Der Abbruch ist für den Thread weiterhin aktiviert.

Hinweise

Wenn der Abbruch des Aufrufs in einem Thread aktiviert ist, können gemarderte synchrone Aufrufe von diesem Thread an Objekte auf demselben Computer schwerwiegende Leistungseinbußen erleiden. Standardmäßig können synchrone Aufrufe dann nicht abgebrochen werden, selbst wenn ein Abbruchobjekt verfügbar ist. Um den Anrufabbruch zu aktivieren, müssen Sie zuerst CoEnableCallCancellation aufrufen.

Wenn der Aufrufabbruch deaktiviert ist, schlagen Versuche, einen Zeiger auf ein Aufrufobjekt zu erhalten, fehl. Wenn der aufrufende Thread bereits über einen Zeiger auf ein Aufrufobjekt verfügt, schlagen Aufrufe dieses Objekts fehl.

Sofern Sie die Anrufabbruch nicht jederzeit für einen Thread aktivieren möchten, sollten Sie Aufrufe von CoEnableCallCancellation mit Aufrufen von CoDisableCallCancellation koppeln. Anrufabbruch ist nur deaktiviert, wenn jeder erfolgreiche Aufruf von CoEnableCallCancellation durch einen erfolgreichen Aufruf von CoDisableCallCancellation ausgeglichen wird.

Ein Aufruf ist abbruchfähig oder nicht abhängig vom Zustand des Threads zum Zeitpunkt des Aufrufs. Das anschließende Aktivieren oder Deaktivieren der Anrufabbruch hat keine Auswirkungen auf Aufrufe, die im Thread ausstehen.

Wenn ein Thread nicht initialisiert und dann durch Aufrufe von CoUninitialize und CoInitialize neu initialisiert wird, ist der Aufrufabbruch für den Thread deaktiviert, auch wenn er aktiviert wurde, als der Thread nicht initialisiert wurde.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile combaseapi.h (include Objbase.h)
Bibliothek Ole32.lib
DLL Ole32.dll

Weitere Informationen

CoEnableCallCancellation

ICancelMethodCalls