IServerSecurity::RevertToSelf 方法 (objidl.h)

将线程的身份验证信息还原到模拟开始之前的信息。

语法

HRESULT RevertToSelf();

返回值

如果方法成功,则返回值S_OK。 否则,它将E_FAIL。

注解

在模拟开始之前,RevertToSelf 会将线程上的身份验证信息还原到该线程上的身份验证信息。 如果服务器在当前调用结束之前未调用 RevertToSelf ,则 COM 会自动调用它。

在当前未模拟的线程上调用 ImpersonateClient 时,COM 会将令牌当前保存在线程上。 对 RevertToSelf 的后续调用将还原保存的令牌, 然后 IsImpersonating 将返回 FALSE。 这意味着,如果使用不同的 IServerSecurity 对象进行一系列模拟调用, 则 RevertToSelf 将还原首次调用 ImpersonateClient 时线程上的令牌。 此外,只需一次 RevertToSelf 调用即可撤消任意数量的 ImpersonateClient 调用。

此方法将仅还原 ImpersonateClient 进行的模拟更改。 如果通过 SetThreadTokenRpcImpersonateClient 函数 (其他方法修改线程令牌) 则此函数的结果未定义。

RevertToSelf 仅影响当前方法调用。 如果存在嵌套方法调用,则每个调用都可以有自己的模拟令牌,并且无论调用 CoRevertToSelf 或 RevertToSelf 是) 调用 CoRevertToSelf 还是 RevertToSelf,DCOM 都会在返回这些令牌之前正确还原 (模拟令牌。

请务必了解 IServerSecurity 实例在单元中的任何线程上都有效,直到 IServerSecurity 表示的调用完成。 但是,模拟在该线程上的当前调用期间是特定线程的本地模拟。 因此,如果同一单元中的两个线程使用相同的 IServerSecurity 实例调用 ImpersonateClient,则一个线程可以调用 RevertToSelf ,而不会影响另一个线程。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 objidl.h (包括 ObjIdl.h)

另请参阅

CoRevertToSelf

IServerSecurity