Freigeben über


CoSwitchCallContext-Funktion (combaseapi.h)

Wechselt das von CoGetCallContext verwendete Aufrufkontextobjekt.

Syntax

HRESULT CoSwitchCallContext(
  [in, optional] IUnknown *pNewObject,
  [out]          IUnknown **ppOldObject
);

Parameter

[in, optional] pNewObject

Ein Zeiger auf eine Schnittstelle für das neue Aufrufkontextobjekt. COM speichert diesen Zeiger, ohne einen Verweis auf den Zeiger hinzuzufügen, bis CoSwitchCallContext mit einem anderen -Objekt aufgerufen wird. Dieser Parameter kann NULL sein, wenn Sie CoSwitchCallContext aufrufen, um zurück zum ursprünglichen Aufrufkontext zu wechseln, aber es gab keinen ursprünglichen Aufrufkontext.

[out] ppOldObject

Die Adresse der Zeigervariable, die einen Zeiger auf das Aufrufkontextobjekt des derzeit laufenden Aufrufs empfängt. Dieser Wert wird zurückgegeben, damit der ursprüngliche Aufrufkontext vom benutzerdefinierten Marshaller wiederhergestellt werden kann. Der zurückgegebene Zeiger ist NULL , wenn kein Aufruf ausgeführt wurde.

Rückgabewert

Diese Funktion kann die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Die Funktion war erfolgreich.
E_OUT_OF_MEMORY
Nicht genügend Arbeitsspeicher.

Hinweise

Benutzerdefinierte Marshaller rufen CoSwitchCallContext auf, um das von der CoGetCallContext-Funktion verwendete Aufrufkontextobjekt zu ändern. Vor dem Senden eines eingehenden Anrufs rufen benutzerdefinierte Marshaller CoSwitchCallContext auf und geben das neue Kontextobjekt an. Nach dem Senden einer Antwort muss der ursprüngliche Aufrufkontext wiederhergestellt werden, indem CoSwitchCallContext erneut aufgerufen wird, und dieses Mal wird ein Zeiger auf das ursprüngliche Kontextobjekt übergeben.

CoSwitchCallContext fügt keinen Verweis auf das neue Kontextobjekt hinzu. Benutzerdefinierte Marshaller müssen sicherstellen, dass die Lebensdauer ihres Kontextobjekts während ihres Aufrufs und bis zum Aufruf fortgesetzt wird, um den ursprünglichen Kontext wiederherzustellen. Benutzerdefinierte Marshaller sollten den Wert, den sie beim Festlegen des Kontexts in den ppOldObject-Parameter eingefügt haben, nicht freigeben.

Aufrufkontextobjekte, die von benutzerdefinierten Marshallern bereitgestellt werden, sollten die IServerSecurity-Schnittstelle unterstützen.

Anforderungen

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

Weitere Informationen

CoGetCallContext

IServerSecurity

Sicherheit in COM