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 所做的模擬變更。 如果線程令牌是由其他方法修改, (透過 SetThreadToken 或 RpcImpersonateClient 函式) 未定義此函式的結果。
RevertToSelf 只會影響目前的方法調用。 如果有巢狀方法調用,則不論 CoRevertToSelf 或 RevertToSelf 是呼叫) ,每個調用都可以有自己的模擬令牌,而 DCOM 會先正確地還原模擬令牌,然後再返回它們 (。
請務必瞭解 IServerSecurity 的實例在 Apartment 中的任何線程上都有效,直到 IServerSecurity 所代表的呼叫完成為止。 不過,仿真是在該線程上目前呼叫期間的特定線程本機。 因此,如果相同 Apartment 中的兩個線程使用相同的 IServerSecurity 實例來呼叫 ImpersonateClient,則一個線程可以呼叫 RevertToSelf ,而不會影響另一個線程。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | objidlbase.h (包含 ObjIdl.h) |