ISecurityProperty::GetOriginalCallerSID メソッド (comsvcs.h)

現在のメソッドが呼び出された呼び出しシーケンスを開始した基本プロセスのセキュリティ識別子を取得します。

元の呼び出し元に関する情報を取得する推奨される方法は、 ISecurityCallContext インターフェイスを使用することです。

構文

HRESULT GetOriginalCallerSID(
  [out] PSID *pSID
);

パラメーター

[out] pSID

現在のメソッドが呼び出された呼び出しシーケンスを開始したベース プロセスのセキュリティ ID への参照。

戻り値

このメソッドは、 E_INVALIDARG、E_OUTOFMEMORYE_UNEXPECTEDE_FAILの標準戻り 値と、次の値を返すことができます。

リターン コード 説明
S_OK
現在のオブジェクトへの呼び出しを開始した基本プロセスのセキュリティ ID は、パラメーター pSid で返されます。
CONTEXT_E_NOCONTEXT
コンポーネントがアプリケーションにインポートされていないか、COM+ CreateInstance メソッドのいずれかでオブジェクトが作成されていないため、現在のオブジェクトにはコンテキストが関連付けられません。

注釈

GetOriginalCallerSID メソッドを使用して、プロセスの発信元 (または作成者) ではなく、現在のメソッドの呼び出し元の呼び出しシーケンスを開始した元のプロセスのセキュリティ ID を確認します。 オブジェクトへのポインターは一連のサーバーとユーザーを介して渡すことができますが、 GetOriginalCallerSID は、そのユーザーがオブジェクトの元の作成者でなくても、常にプロセスの最初のサーバーとユーザーを返します。 次のシナリオは、 GetOriginalCallerSID メソッドの機能を示しています。

2 つの基本プロセスを実行している 4 つのサーバー間で渡されるオブジェクト参照の GetOriginalCallerSID メソッドの結果を示す図。

  1. 基本プロセス 1 は、ユーザー A としてサーバー A で実行され、ユーザー B として実行されるオブジェクト X をサーバー B に作成します。
  2. 基本プロセス 1 は、ユーザー D としてサーバー D で実行されている、オブジェクト X の参照を基本プロセス 2 に渡します。
  3. 基本プロセス 2 では、その参照を使用してオブジェクト X を呼び出します。
  4. オブジェクト X は、サーバー C で実行されているオブジェクト Y を呼び出します。オブジェクト Y が GetOriginalCallerSID を呼び出すと、最初にオブジェクトを作成したユーザー A ではなく、ユーザー D のセキュリティ ID が返されます。
メモ 通常、オブジェクトの元の呼び出し元は、元の作成者と同じプロセスです。 元の呼び出し元と元の作成者が異なる唯一の状況は、元の作成者が別のプロセスへの参照を渡し、もう一方のプロセスが呼び出しシーケンスを開始することです (前の例のように)。
 
チェーンに沿ったオブジェクトが IObjectContext::CreateInstance または ITransactionContext::CreateInstance 以外の方法で作成された場合、元の呼び出し元へのパスは切断されます。 たとえば、Base Process 1 で CoCreateInstance を使用してオブジェクト X を作成する場合、Object Y が GetOriginalCallerSID を 呼び出すと、返されるセキュリティ ID はユーザー D ではなくユーザー B のセキュリティ ID になります。これは、呼び出しシーケンスがオブジェクトのコンテキストを通じてトレースされ、COM+ が IObjectContext::CreateInstance または ITransactionContext::CreateInstance で作成されたオブジェクトに対してのみコンテキスト を作成できるためです。

セキュリティ ID の使用が完了したら、 ReleaseSID を呼び出す必要があります。

要件

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

こちらもご覧ください

ISecurityProperty