Метод 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, создает объект X на сервере B, выполняющийся от имени пользователя B.
  2. Затем базовый процесс 1 передает свою ссылку на объект X базовому процессу 2, который выполняется на сервере D в качестве пользователя D.
  3. Базовый процесс 2 использует ссылку для вызова объекта X.
  4. Затем объект X вызывает объект Y, работающий на сервере C. Если объект Y вызывает GetOriginalCallerName, возвращается имя пользователя D, а не пользователя A, который изначально создал объект.
Путь к исходному вызывающому объекту нарушается, если какой-либо объект в цепочке был создан с помощью других средств , кроме ObjectContext::CreateInstance или ITransactionContext::CreateInstance. Например, если базовый процесс 1 использует CoCreateInstance для создания объекта X, когда объект Y вызывает GetOriginalCallerName, возвращается имя пользователя B, а не пользователя D. Это связано с тем, что последовательность вызовов трассируется обратно через контекст объектов, и COM+ может создать контекст только для объекта, созданного с помощью ObjectContext::CreateInstance или ITransactionContext::CreateInstance.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header comsvcs.h

См. также раздел

SecurityProperty