Metodo IServerSecurity::RevertToSelf (objidl.h)

Ripristina le informazioni di autenticazione di un thread a quello che era prima dell'inizio della rappresentazione.

Sintassi

HRESULT RevertToSelf();

Valore restituito

Se il metodo ha esito positivo, il valore restituito viene S_OK. In caso contrario, è E_FAIL.

Commenti

RevertToSelf ripristina le informazioni di autenticazione in un thread sulle informazioni di autenticazione nel thread prima dell'inizio della rappresentazione. Se il server non chiama RevertToSelf prima della fine della chiamata corrente, verrà chiamato automaticamente da COM.

Quando ImpersonateClient viene chiamato su un thread che non rappresenta attualmente, COM salva il token attualmente nel thread. Una chiamata successiva a RevertToSelf ripristina il token salvato e IsImpersonating restituirà quindi FALSE. Ciò significa che se viene eseguita una serie di chiamate di rappresentazione usando oggetti IServerSecurity diversi, RevertToSelf ripristinerà il token presente nel thread quando è stata effettuata la prima chiamata a ImpersonateClient . Inoltre, è necessaria una sola chiamata RevertToSelf per annullare un numero qualsiasi di chiamate ImpersonateClient .

Questo metodo ripristina solo le modifiche di rappresentazione apportate da ImpersonateClient. Se il token del thread viene modificato con altri mezzi (tramite le funzioni SetThreadToken o RpcImpersonateClient ), il risultato di questa funzione non è definito.

RevertToSelf influisce solo sulla chiamata al metodo corrente. Se sono presenti chiamate al metodo annidate, ogni chiamata può avere un proprio token di rappresentazione e DCOM ripristinerà correttamente il token di rappresentazione prima di tornare a tali chiamate (indipendentemente dal fatto che sia stato chiamato CoRevertToSelf o RevertToSelf ).

È importante comprendere che un'istanza di IServerSecurity è valida in qualsiasi thread dell'apartment fino al completamento della chiamata rappresentata da IServerSecurity . Tuttavia, la rappresentazione è locale a un determinato thread per la durata della chiamata corrente su tale thread. Pertanto, se due thread nello stesso apartment usano la stessa istanza di IServerSecurity per chiamare ImpersonateClient, un thread può chiamare RevertToSelf senza influire sull'altro.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione objidl.h (include ObjIdl.h)

Vedi anche

CoRevertToSelf

IServerSecurity