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

Restaura la información de autenticación de un subproceso a lo que era antes de que comenzara la suplantación.

Sintaxis

HRESULT RevertToSelf();

Valor devuelto

Si el método se realiza correctamente, el valor devuelto es S_OK. De lo contrario, es E_FAIL.

Comentarios

RevertToSelf restaura la información de autenticación de un subproceso a la información de autenticación del subproceso antes de que se inicie la suplantación. Si el servidor no llama a RevertToSelf antes del final de la llamada actual, COM lo llamará automáticamente.

Cuando se llama a ImpersonateClient en un subproceso que no está suplantando actualmente, COM guarda el token actualmente en el subproceso. Una llamada posterior a RevertToSelf restaura el token guardado y, a continuación, IsImpersonating devolverá FALSE. Esto significa que si se realiza una serie de llamadas de suplantación mediante diferentes objetos IServerSecurity , RevertToSelf restaurará el token que estaba en el subproceso cuando se realizó la primera llamada a ImpersonateClient . Además, solo se necesita una llamada RevertToSelf para deshacer cualquier número de llamadas ImpersonateClient .

Este método solo revertirá los cambios de suplantación realizados por ImpersonateClient. Si el token de subproceso se modifica por otros medios (a través de las funciones SetThreadToken o RpcImpersonateClient ), el resultado de esta función no está definido.

RevertToSelf afecta solo a la invocación del método actual. Si hay invocaciones de método anidadas, cada invocación puede tener su propio token de suplantación y DCOM restaurará correctamente el token de suplantación antes de volver a ellos (independientemente de si se llamó a CoRevertToSelf o RevertToSelf ).

Es importante comprender que una instancia de IServerSecurity es válida en cualquier subproceso del apartamento hasta que se complete la llamada representada por IServerSecurity . Sin embargo, la suplantación es local para un subproceso determinado mientras dure la llamada actual en ese subproceso. Por lo tanto, si dos subprocesos del mismo apartamento usan la misma instancia de IServerSecurity para llamar a ImpersonateClient, un subproceso puede llamar a RevertToSelf sin afectar a la otra.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado objidlbase.h (incluya ObjIdl.h)

Consulte también

CoRevertToSelf

IServerSecurity