IServerSecurity::RevertToSelf 方法 (objidl.h)
将线程的身份验证信息还原到模拟开始之前的信息。
语法
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 是) 调用 CoRevertToSelf 还是 RevertToSelf,DCOM 都会在返回这些令牌之前正确还原 (模拟令牌。
请务必了解 IServerSecurity 实例在单元中的任何线程上都有效,直到 IServerSecurity 表示的调用完成。 但是,模拟在该线程上的当前调用期间是特定线程的本地模拟。 因此,如果同一单元中的两个线程使用相同的 IServerSecurity 实例调用 ImpersonateClient,则一个线程可以调用 RevertToSelf ,而不会影响另一个线程。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | objidl.h (包括 ObjIdl.h) |