ISecurityProperty::GetOriginalCallerSID メソッド (comsvcs.h)
現在のメソッドが呼び出された呼び出しシーケンスを開始した基本プロセスのセキュリティ識別子を取得します。
元の呼び出し元に関する情報を取得する推奨される方法は、 ISecurityCallContext インターフェイスを使用することです。
構文
HRESULT GetOriginalCallerSID(
[out] PSID *pSID
);
パラメーター
[out] pSID
現在のメソッドが呼び出された呼び出しシーケンスを開始したベース プロセスのセキュリティ ID への参照。
戻り値
このメソッドは、 E_INVALIDARG、E_OUTOFMEMORY、 E_UNEXPECTED、 E_FAILの標準戻り 値と、次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
現在のオブジェクトへの呼び出しを開始した基本プロセスのセキュリティ ID は、パラメーター pSid で返されます。 |
|
コンポーネントがアプリケーションにインポートされていないか、COM+ CreateInstance メソッドのいずれかでオブジェクトが作成されていないため、現在のオブジェクトにはコンテキストが関連付けられません。 |
注釈
GetOriginalCallerSID メソッドを使用して、プロセスの発信元 (または作成者) ではなく、現在のメソッドの呼び出し元の呼び出しシーケンスを開始した元のプロセスのセキュリティ ID を確認します。 オブジェクトへのポインターは一連のサーバーとユーザーを介して渡すことができますが、 GetOriginalCallerSID は、そのユーザーがオブジェクトの元の作成者でなくても、常にプロセスの最初のサーバーとユーザーを返します。 次のシナリオは、 GetOriginalCallerSID メソッドの機能を示しています。
- 基本プロセス 1 は、ユーザー A としてサーバー A で実行され、ユーザー B として実行されるオブジェクト X をサーバー B に作成します。
- 基本プロセス 1 は、ユーザー D としてサーバー D で実行されている、オブジェクト X の参照を基本プロセス 2 に渡します。
- 基本プロセス 2 では、その参照を使用してオブジェクト X を呼び出します。
- オブジェクト X は、サーバー C で実行されているオブジェクト Y を呼び出します。オブジェクト Y が GetOriginalCallerSID を呼び出すと、最初にオブジェクトを作成したユーザー A ではなく、ユーザー D のセキュリティ ID が返されます。
メモ 通常、オブジェクトの元の呼び出し元は、元の作成者と同じプロセスです。 元の呼び出し元と元の作成者が異なる唯一の状況は、元の作成者が別のプロセスへの参照を渡し、もう一方のプロセスが呼び出しシーケンスを開始することです (前の例のように)。
セキュリティ ID の使用が完了したら、 ReleaseSID を呼び出す必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | comsvcs.h |