Partager via


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

Restaure les informations d’authentification d’un thread à ce qu’elles étaient 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 sera appelé automatiquement par COM.

Quand ImpersonateClient est appelé sur un thread qui n’emprunte pas d’identité, COM enregistre actuellement le jeton sur le thread. Un appel suivant à RevertToSelf restaure le jeton enregistré, et IsImpersonating retourne ensuite FALSE. Cela signifie que si une série d’appels d’emprunt d’identité sont effectués à l’aide de différents objets IServerSecurity , 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é apporté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 d’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 en cours 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 objidl.h (inclure ObjIdl.h)

Voir aussi

CoRevertToSelf

IServerSecurity