Partager via


Méthode IServerSecurity ::RevertToSelf (objidlbase.h)

Restaure les informations d’authentification d’un thread à ce qu’elle était avant le début de l’emprunt d’identité.

Syntaxe

HRESULT RevertToSelf();

Valeur de retour

Si la méthode réussit, la valeur de retour est S_OK. Sinon, c’est E_FAIL.

Remarques

RevertToSelf restaure les informations d’authentification sur un thread dans les informations d’authentification sur le thread avant le début de l’emprunt d’identité. Si le serveur n’appelle pas RevertToSelf avant la fin de l’appel actuel, il est appelé automatiquement par COM.

Quand ImpersonateClient est appelé sur un thread qui n’emprunte pas actuellement l’identité, COM enregistre le jeton actuellement sur le thread. Un appel suivant à RevertToSelf restaure le jeton enregistré, et IsImpersonating retourne alors FALSE. Cela signifie que si une série d’appels d’emprunt d’identité sont effectués à l’aide d’objets IServerSecurity différents, RevertToSelf restaure le jeton qui se trouvait sur le thread lors du premier appel à ImpersonateClient . En outre, un seul appel RevertToSelf est nécessaire pour annuler un nombre quelconque d’appels ImpersonateClient .

Cette méthode rétablit uniquement les modifications d’emprunt d’identité effectuées par ImpersonateClient. Si le jeton de thread est modifié par d’autres moyens (par le biais des fonctions SetThreadToken ou RpcImpersonateClient ), le résultat de cette fonction n’est pas défini.

RevertToSelf affecte uniquement l’appel de méthode actuel. S’il existe des appels de méthode imbriqués, chaque appel peut avoir son propre jeton d’emprunt d’identité et DCOM restaure correctement le jeton d’emprunt d’identité avant d’y revenir (que CoRevertToSelf ou RevertToSelf ait été appelé).

Il est important de comprendre qu’une instance de IServerSecurity est valide sur n’importe quel thread de l’appartement jusqu’à ce que l’appel représenté par IServerSecurity se termine. Toutefois, l’emprunt d’identité est local pour un thread particulier pendant la durée de l’appel actuel sur ce thread. Par conséquent, si deux threads dans le même appartement utilisent le même instance IServerSecurity pour appeler ImpersonateClient, un thread peut appeler RevertToSelf sans affecter l’autre.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête objidlbase.h (inclure ObjIdl.h)

Voir aussi

CoRevertToSelf

IServerSecurity