IServerSecurity::RevertToSelf 方法 (objidl.h)
將線程的驗證資訊還原到模擬開始之前的狀態。
Syntax
HRESULT RevertToSelf();
傳回值
如果方法成功,傳回值會S_OK。 否則會E_FAIL。
備註
RestoreToSelf 會在模擬開始之前,將線程上的驗證資訊還原至線程上的驗證資訊。 如果伺服器未在目前呼叫結束時呼叫 RevertToSelf ,則 COM 會自動呼叫它。
在目前未仿真的線程上呼叫 ImpersonateClient 時,COM 會將令牌儲存在線程上。 RestoreToSelf 的後續呼叫會還原已儲存的令牌,IsImpersonating 接著會傳回 FALSE。 這表示,如果使用不同的 IServerSecurity 對象進行一系列模擬呼叫, RevertToSelf 會在第一次呼叫 ImpersonateClient 時還原線程上的令牌。 此外,只需要一個 RevertToSelf 呼叫,才能復原任意數目的 ImpersonateClient 呼叫。
這個方法只會還原 ImpersonateClient 所做的模擬變更。 如果線程令牌是以其他方式修改, (透過 SetThreadToken 或 RpcImpersonateClient 函式) 未定義此函式的結果。
RevertToSelf 只會影響目前的方法調用。 如果有巢狀方法調用,則不論 CoRevertToSelf 或 RevertToSelf 是否呼叫) ,DCOM 都會正確地還原模擬令牌,然後再返回它們 (。
請務必瞭解 IServerSecurity 的實例在 Apartment 中的任何線程上都有效,直到 IServerSecurity 所代表的呼叫完成為止。 不過,仿真是在該線程上目前呼叫期間的特定線程本機。 因此,如果相同 Apartment 中的兩個線程使用相同的 IServerSecurity 實例來呼叫 ImpersonateClient,一個線程可以呼叫 RevertToSelf 而不會影響另一個線程。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | objidl.h (包含 ObjIdl.h) |