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 |
---|---|
|
Die Funktion war erfolgreich. |
|
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 |