Поделиться через


Метод IServerSecurity::RevertToSelf (objidl.h)

Восстанавливает сведения о проверке подлинности потока до начала олицетворения.

Синтаксис

HRESULT RevertToSelf();

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение будет S_OK. В противном случае это E_FAIL.

Комментарии

RevertToSelf восстанавливает сведения о проверке подлинности в потоке до начала олицетворения. Если сервер не вызывает RevertToSelf до окончания текущего вызова, com автоматически вызывает его.

При вызове ImpersonateClient в потоке, который в настоящее время не олицетворяется, COM сохраняет маркер в текущем потоке. Последующий вызов RevertToSelf восстанавливает сохраненный маркер, и IsImpersonating возвращает значение FALSE. Это означает, что если ряд вызовов олицетворения выполняется с использованием различных объектов IServerSecurity , RevertToSelf восстановит маркер, который был в потоке при первом вызове ImpersonateClient . Кроме того, для отмены любого количества вызовов ImpersonateClient требуется только один вызов RevertToSelf.

Этот метод будет отменить изменения только изменения олицетворения, внесенные ImpersonateClient. Если маркер потока изменяется другими способами (с помощью функций SetThreadToken или RpcImpersonateClient ), результат этой функции не определен.

RevertToSelf влияет только на вызов текущего метода. Если есть вызовы вложенных методов, каждый вызов может иметь собственный маркер олицетворения, и DCOM правильно восстановит маркер олицетворения перед возвратом к ним (независимо от того, был ли вызван CoRevertToSelf или RevertToSelf ).

Важно понимать, что экземпляр IServerSecurity действителен в любом потоке в квартире до завершения вызова, представленного IServerSecurity . Однако олицетворение является локальным для определенного потока в течение текущего вызова в этом потоке. Таким образом, если два потока в одном и том же объекте используют один и тот же экземпляр IServerSecurity для вызова ImpersonateClient, один поток может вызывать RevertToSelf , не затрагивая другой.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header objidl.h (включая ObjIdl.h)

См. также раздел

CoRevertToSelf

IServerSecurity