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 上创建对象 X,以用户 B 身份运行。
  2. 然后,基本进程 1 将其对对象 X 的引用传递给以用户 D 身份在服务器 D 上运行的基本进程 2。
  3. 基本进程 2 使用该引用来调用对象 X。
  4. 然后,对象 X 调用在服务器 C 上运行的对象 Y。如果对象 Y 然后调用 GetOriginalCallerName,则返回用户 D 的名称,而不是最初创建该对象的用户 A 的名称。
如果链上的任何对象是通过 ObjectContext::CreateInstance 或 ITransactionContext::CreateInstance 以外的其他方法创建的,则原始调用方的路径将断开。 例如,如果基本进程 1 使用 CoCreateInstance 创建对象 X,当对象 Y 调用 GetOriginalCallerName 时,它返回的名称将是用户 B 的名称,而不是用户 D 的名称。这是因为调用序列通过对象的上下文进行跟踪,并且 COM+ 只能为使用 ObjectContext::CreateInstanceITransactionContext::CreateInstance 创建的对象创建上下文。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 comsvcs.h

另请参阅

SecurityProperty