次の方法で共有


RpcRevertToSelfEx 関数 (rpcdce.h)

RpcRevertToSelfEx 関数を使用すると、サーバーはクライアントを偽装してから、クライアントを偽装する呼び出しが、RPC から最初にディスパッチされたスレッド以外のスレッドから取得できるマルチスレッド操作で元に戻すことができます。

構文

RPC_STATUS RpcRevertToSelfEx(
  RPC_BINDING_HANDLE BindingHandle
);

パラメーター

BindingHandle

サーバーが偽装したクライアントへのバインドを表すサーバー上のバインド ハンドル。 値 0 は、現在のスレッドのクライアント ハンドルを指定します。この場合、 RpcRevertToSelfEx の機能は 、RpcRevertToSelf 関数の機能と同じです。

戻り値

説明
RPC_S_OK
呼び出しは成功しました。
RPC_S_NO_CALL_ACTIVE
サーバーには、偽装するクライアントがありません。
RPC_S_INVALID_BINDING
バインド ハンドルが無効です。
RPC_S_WRONG_KIND_OF_BINDING
これは、この操作のバインドの種類が間違っています。
RPC_S_CANNOT_SUPPORT
この呼び出しは、このオペレーティング システム、このトランスポート、またはこのセキュリティ サブシステムではサポートされていません。
 
メモ 有効なエラー コードの一覧については、「 RPC 戻り値」を参照してください。
 

解説

RpcImpersonateClient を呼び出し、クライアントの偽装を必要とするタスクを完了すると、サーバーは RpcRevertToSelfEx を呼び出して偽装を終了し、独自のセキュリティ ID を再確立します。 たとえば、スレッド 1 と呼ばれるプライマリ スレッドについて考えます。これはリモート クライアントからディスパッチされ、thread2 と呼ばれるワーカー スレッドをウェイクアップします。 thread2 でサーバーがクライアントを偽装する必要がある場合、サーバーは RpcImpersonateClient(THREAD1_CALL_HANDLE) を呼び出し、必要なタスクを実行し、 RpcRevertToSelfEx(THREAD1_CALL_HANDLE) を呼び出して偽装を終了し、thread1 をウェイクアップします。

要件

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

関連項目

クライアントの権限借用

RpcImpersonateClient

RpcRevertToSelf