SecurityProperty::GetOriginalCallerName メソッド (comsvcs.h)

現在のオブジェクトへの呼び出し元の呼び出しのシーケンスを開始した基本プロセスに関連付けられているユーザー名を取得します。

構文

HRESULT GetOriginalCallerName(
  [out] BSTR *bstrUserName
);

パラメーター

[out] bstrUserName

現在のオブジェクトへの呼び出し元の呼び出しのシーケンスを開始した基本プロセスに関連付けられているユーザー名への参照。

戻り値

このメソッドは、E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、S_OKの標準戻り値を返すことができます。

解説

通常、オブジェクトの元の呼び出し元は、元の作成者と同じプロセスです。 元の呼び出し元と元の作成者が異なる唯一の状況は、元の作成者が別のプロセスへの参照を渡し、もう一方のプロセスが呼び出しシーケンスを開始することです。

次のシナリオは、このメソッドの機能を示しています。

  1. 基本プロセス 1 は、ユーザー A としてサーバー A で実行され、ユーザー B として実行されているサーバー B にオブジェクト X を作成します。
  2. 次に、基本プロセス 1 はオブジェクト X 上の参照をベース プロセス 2 に渡し、サーバー D でユーザー D として実行します。
  3. 基本プロセス 2 では、その参照を使用してオブジェクト X を呼び出します。
  4. 次に、オブジェクト X は、サーバー C で実行されているオブジェクト Y を呼び出します。オブジェクト Y が GetOriginalCallerName を呼び出すと、最初にオブジェクトを作成したユーザー A ではなく、ユーザー D の名前が返されます。
チェーンに沿ったオブジェクトが ObjectContext::CreateInstance または ITransactionContext::CreateInstance 以外の方法で作成された場合、元の呼び出し元へのパスは切断されます。 たとえば、基本プロセス 1 で CoCreateInstance を使用してオブジェクト X を作成する場合、オブジェクト Y が GetOriginalCallerName を呼び出すと、返される名前はユーザー D ではなくユーザー B の名前になります。これは、呼び出しシーケンスがオブジェクトのコンテキストを通じてトレースされ、COM+ が ObjectContext::CreateInstance または ITransactionContext::CreateInstance で作成されたオブジェクトに対してのみコンテキスト を作成できるためです。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー comsvcs.h

関連項目

SecurityProperty