IServerSecurity::RevertToSelf メソッド (objidl.h)
偽装が開始される前のスレッドの認証情報を復元します。
構文
HRESULT RevertToSelf();
戻り値
メソッドが成功した場合、戻り値はS_OK。 それ以外の場合は、E_FAIL。
注釈
RevertToSelf は、偽装が開始される前に、スレッドの認証情報をスレッドの認証情報に復元します。 サーバーが現在の呼び出しの終了前に RevertToSelf を呼び出さない場合は、COM によって自動的に呼び出されます。
ImpersonateClient が現在偽装されていないスレッドで呼び出されると、COM は現在スレッド上にトークンを保存します。 RevertToSelf の後続の呼び出しによって保存されたトークンが復元され、IsImpersonating は FALSE を返します。 つまり、異なる IServerSecurity オブジェクトを使用して一連の偽装呼び出しが行われた場合、 RevertToSelf は ImpersonateClient の最初の呼び出しが行われたときにスレッド上にあったトークンを復元します。 また、任意の数の ImpersonateClient 呼び出しを元に戻すために必要な RevertToSelf 呼び出しは 1 つだけです。
このメソッドは、 ImpersonateClient によって行われた偽装の変更のみを元に戻します。 スレッド トークンが他の方法 ( SetThreadToken 関数または RpcImpersonateClient 関数を通じて) 変更された場合、この関数の結果は未定義になります。
RevertToSelf は、現在のメソッド呼び出しにのみ影響します。 入れ子になったメソッド呼び出しがある場合、各呼び出しには独自の偽装トークンを使用できます。DCOM は、( CoRevertToSelf または RevertToSelf が呼び出されたかどうかに関係なく) それらに戻る前に偽装トークンを正しく復元します。
IServerSecurity で表される呼び出しが完了するまで、アパートメント内の任意のスレッドで IServerSecurity のインスタンスが有効であることを理解しておくことが重要です。 ただし、偽装は、そのスレッドでの現在の呼び出しの間、特定のスレッドに対してローカルです。 したがって、同じアパートメント内の 2 つのスレッドが同じ IServerSecurity インスタンスを使用して ImpersonateClient を呼び出す場合、一方のスレッドはもう一方のスレッドに影響を与えることなく RevertToSelf を呼び出すことができます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | objidl.h (ObjIdl.h を含む) |