Поделиться через


Метод ISecurityProperty::GetDirectCallerSID (comsvcs.h)

Извлекает идентификатор безопасности внешнего процесса, который вызвал метод, выполняющийся в данный момент. Эти сведения также можно получить с помощью ISecurityCallContext.

Синтаксис

HRESULT GetDirectCallerSID(
  [out] PSID *pSID
);

Параметры

[out] pSID

Ссылка на идентификатор безопасности процесса, из которого был вызван текущий метод.

Возвращаемое значение

Этот метод может возвращать стандартные возвращаемые значения E_INVALIDARG, E_OUTOFMEMORY, E_UNEXPECTED и E_FAIL, а также следующие значения.

Код возврата Описание
S_OK
Идентификатор безопасности процесса, который вызвал текущий метод, возвращается в параметре pSid.
CONTEXT_E_NOCONTEXT
Текущий объект не имеет контекста, связанного с ним, так как компонент не был импортирован в приложение или объект не был создан с помощью одного из методов COM+ CreateInstance.

Комментарии

Используйте метод GetDirectCallerSID , чтобы определить идентификатор безопасности процесса, который вызвал текущий выполняемый метод объекта. Безопасность обеспечивается через границы процесса. Это означает, что идентификатор безопасности, возвращаемый GetDirectCallerSID , является идентификатором безопасности, связанным с процессом, который вызывается в процессе, в котором выполняется текущий объект, а не обязательно непосредственным вызывающим объектом самого объекта. Если объект вызывает другой объект в рамках того же процесса, то, когда второй объект вызывает GetDirectCallerSID , он получает идентификатор безопасности наиболее непосредственно вызывающего объекта за пределами собственного процесса, а не идентификатор безопасности объекта, который непосредственно вызывается в него.

Следующие сценарии демонстрируют функциональные возможности метода GetDirectCallerSID :

  • Базовый процесс, выполняемый на сервере A от имени пользователя A, вызывает объект X на сервере B, выполняющийся от имени пользователя B. Затем объект X вызывает объект Y, запущенный на сервере C. Если Object Y вызывает GetDirectCallerSID, возвращается идентификатор безопасности пользователя B.
  • Базовый процесс, запущенный на сервере A от имени пользователя A, вызывает объект X на сервере B от имени пользователя B. Затем объект X вызывает объект Y, выполняяся в том же процессе, что и объект X, а также на сервере B. Когда object Y вызывает GetDirectCallerSID, возвращается идентификатор безопасности пользователя A, а не идентификатор безопасности пользователя B.
По завершении использования необходимо вызвать ISecurityProperty::ReleaseSID для идентификатора безопасности.

Требования

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

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

ISecurityProperty