共用方式為


IServerSecurity::RevertToSelf 方法 (objidlbase.h)

將線程的驗證資訊還原到模擬開始之前的內容。

Syntax

HRESULT RevertToSelf();

傳回值

如果方法成功,傳回值會S_OK。 否則,它會E_FAIL。

備註

RevertToSelf 會在模擬開始之前,將線程上的驗證資訊還原至線程上的驗證資訊。 如果伺服器未在目前呼叫結束時呼叫 RevertToSelf,COM 會自動呼叫它。

在目前未仿真的線程上呼叫 ImpersonateClient 時,COM 會將令牌儲存在線程上。 對 RevertToSelf 的後續呼叫會還原已儲存的令牌,然後 IsImpersonating 會傳回 FALSE。 這表示,如果使用不同的 IServerSecurity 對象進行一系列模擬呼叫, RevertToSelf 會在第一次呼叫 ImpersonateClient 時還原線程上的令牌。 此外,只需要一個 RevertToSelf 呼叫,才能復原任意數目的 ImpersonateClient 呼叫。

這個方法只會還原 ImpersonateClient 所做的模擬變更。 如果線程令牌是由其他方法修改, (透過 SetThreadTokenRpcImpersonateClient 函式) 未定義此函式的結果。

RevertToSelf 只會影響目前的方法調用。 如果有巢狀方法調用,則不論 CoRevertToSelfRevertToSelf 是呼叫) ,每個調用都可以有自己的模擬令牌,而 DCOM 會先正確地還原模擬令牌,然後再返回它們 (。

請務必瞭解 IServerSecurity 的實例在 Apartment 中的任何線程上都有效,直到 IServerSecurity 所代表的呼叫完成為止。 不過,仿真是在該線程上目前呼叫期間的特定線程本機。 因此,如果相同 Apartment 中的兩個線程使用相同的 IServerSecurity 實例來呼叫 ImpersonateClient,則一個線程可以呼叫 RevertToSelf ,而不會影響另一個線程。

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 objidlbase.h (包含 ObjIdl.h)

另請參閱

CoRevertToSelf

IServerSecurity