IServerSecurity::RevertToSelf-Methode (objidl.h)
Stellt die Authentifizierungsinformationen eines Threads so wieder her, wie er vor dem Identitätswechsel war.
Syntax
HRESULT RevertToSelf();
Rückgabewert
Wenn die Methode erfolgreich ist, wird der Rückgabewert S_OK. Andernfalls wird sie E_FAIL.
Hinweise
RevertToSelf stellt die Authentifizierungsinformationen in einem Thread in den Authentifizierungsinformationen im Thread wieder her, bevor der Identitätswechsel begann. Wenn der Server RevertToSelf nicht vor dem Ende des aktuellen Aufrufs aufruft, wird er automatisch von COM aufgerufen.
Wenn ImpersonateClient für einen Thread aufgerufen wird, der sich derzeit nicht im Identitätswechsel befindet, speichert COM das Token derzeit im Thread. Durch einen nachfolgenden Aufruf von RevertToSelf wird das gespeicherte Token wiederhergestellt, und IsImpersonating gibt dann FALSE zurück. Dies bedeutet, dass RevertToSelf das Token im Thread wiederherstellen wird, wenn eine Reihe von Identitätswechselaufrufen mit unterschiedlichen IServerSecurity-Objekten ausgeführt wird. Außerdem ist nur ein RevertToSelf-Aufruf erforderlich, um eine beliebige Anzahl von ImpersonateClient-Aufrufen rückgängig zu machen.
Diese Methode rückgängig machen nur Identitätswechseländerungen, die von ImpersonateClient vorgenommen wurden. Wenn das Threadtoken mit anderen Mitteln (über die Funktionen SetThreadToken oder RpcImpersonateClient ) geändert wird, ist das Ergebnis dieser Funktion nicht definiert.
RevertToSelf wirkt sich nur auf den aktuellen Methodenaufruf aus. Wenn geschachtelte Methodenaufrufe vorhanden sind, kann jeder Aufruf über ein eigenes Identitätswechseltoken verfügen, und DCOM stellt das Identitätswechseltoken ordnungsgemäß wieder her, bevor er zu ihnen zurückkehrt (unabhängig davon, ob CoRevertToSelf oder RevertToSelf aufgerufen wurde).
Es ist wichtig zu verstehen, dass ein instance von IServerSecurity für jeden Thread im Apartment gültig ist, bis der von IServerSecurity dargestellte Aufruf abgeschlossen ist. Der Identitätswechsel erfolgt jedoch für einen bestimmten Thread für die Dauer des aktuellen Aufrufs dieses Threads lokal. Wenn also zwei Threads in demselben Apartment denselben IServerSecurity-instance verwenden, um ImpersonateClient aufzurufen, kann ein Thread RevertToSelf aufrufen, ohne dass sich dies auf den anderen auswirkt.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | objidl.h (include ObjIdl.h) |