次の方法で共有


IServerSecurity::RevertToSelf メソッド (objidlbase.h)

偽装が開始される前のスレッドの認証情報を復元します。

構文

HRESULT RevertToSelf();

戻り値

メソッドが成功した場合、戻り値はS_OK。 それ以外の場合は、E_FAIL。

注釈

RevertToSelf は、偽装が開始される前に、スレッドの認証情報をスレッドの認証情報に復元します。 サーバーが現在の呼び出しの終了前に RevertToSelf を呼び出さない場合は、COM によって自動的に呼び出されます。

ImpersonateClient が現在偽装されていないスレッドで呼び出されると、COM は現在スレッド上にトークンを保存します。 RevertToSelf の後続の呼び出しによって保存されたトークンが復元され、IsImpersonatingFALSE を返します。 つまり、異なる IServerSecurity オブジェクトを使用して一連の偽装呼び出しが行われた場合、 RevertToSelfImpersonateClient の最初の呼び出しが行われたときにスレッド上にあったトークンを復元します。 また、任意の数の ImpersonateClient 呼び出しを元に戻すために必要な RevertToSelf 呼び出しは 1 つだけです。

このメソッドは、 ImpersonateClient によって行われた偽装の変更のみを元に戻します。 スレッド トークンが他の方法 ( SetThreadToken 関数または RpcImpersonateClient 関数を通じて) 変更された場合、この関数の結果は未定義になります。

RevertToSelf は、現在のメソッド呼び出しにのみ影響します。 入れ子になったメソッド呼び出しがある場合、各呼び出しには独自の偽装トークンを使用できます。DCOM は、( CoRevertToSelf または RevertToSelf が呼び出されたかどうかに関係なく) それらに戻る前に偽装トークンを正しく復元します。

IServerSecurity で表される呼び出しが完了するまで、アパートメント内の任意のスレッドで IServerSecurity のインスタンスが有効であることを理解しておくことが重要です。 ただし、偽装は、そのスレッドでの現在の呼び出しの間、特定のスレッドに対してローカルです。 したがって、同じアパートメント内の 2 つのスレッドが同じ IServerSecurity インスタンスを使用して ImpersonateClient を呼び出す場合、一方のスレッドはもう一方のスレッドに影響を与えることなく RevertToSelf を呼び出すことができます。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー objidlbase.h (ObjIdl.h を含む)

こちらもご覧ください

CoRevertToSelf

IServerSecurity