Método IServerSecurity::RevertToSelf (objidlbase.h)
Restaura as informações de autenticação de um thread para o que era antes do início da representação.
Sintaxe
HRESULT RevertToSelf();
Retornar valor
Se o método for bem-sucedido, o valor retornado será S_OK. Caso contrário, será E_FAIL.
Comentários
RevertToSelf restaura as informações de autenticação em um thread para as informações de autenticação no thread antes do início da representação. Se o servidor não chamar RevertToSelf antes do final da chamada atual, ele será chamado automaticamente pelo COM.
Quando ImpersonateClient é chamado em um thread que não está sendo representado no momento, COM salva o token atualmente no thread. Uma chamada subsequente para RevertToSelf restaura o token salvo e IsImpersonating retornará FALSE. Isso significa que, se uma série de chamadas de representação forem feitas usando diferentes objetos IServerSecurity , RevertToSelf restaurará o token que estava no thread quando a primeira chamada para ImpersonateClient foi feita. Além disso, apenas uma chamada RevertToSelf é necessária para desfazer qualquer número de chamadas ImpersonateClient .
Esse método só reverter alterações de representação feitas por ImpersonateClient. Se o token de thread for modificado por outros meios (por meio das funções SetThreadToken ou RpcImpersonateClient ), o resultado dessa função será indefinido.
RevertToSelf afeta apenas a invocação do método atual. Se houver invocações de método aninhadas, cada invocação poderá ter seu próprio token de representação e o DCOM restaurará corretamente o token de representação antes de retornar a eles (independentemente de CoRevertToSelf ou RevertToSelf ter sido chamado).
É importante entender que uma instância de IServerSecurity é válida em qualquer thread no apartment até que a chamada representada por IServerSecurity seja concluída. No entanto, a representação é local para um thread específico durante a chamada atual nesse thread. Portanto, se dois threads no mesmo apartment usarem a mesma instância IServerSecurity para chamar ImpersonateClient, um thread poderá chamar RevertToSelf sem afetar o outro.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | objidlbase.h (inclua ObjIdl.h) |