다음을 통해 공유


SecurityProperty::GetOriginalCallerName 메서드(comsvcs.h)

현재 개체에 대한 호출이 시작된 호출 시퀀스를 시작한 기본 프로세스와 연결된 사용자 이름을 검색합니다.

구문

HRESULT GetOriginalCallerName(
  [out] BSTR *bstrUserName
);

매개 변수

[out] bstrUserName

현재 개체에 대한 호출이 시작된 호출 시퀀스를 시작한 기본 프로세스와 연결된 사용자 이름에 대한 참조입니다.

반환 값

이 메서드는 표준 반환 값 E_INVALIDARG, E_OUTOFMEMORY, E_UNEXPECTED, E_FAIL 및 S_OK 반환할 수 있습니다.

설명

일반적으로 개체의 원래 호출자는 원래 작성자와 동일한 프로세스입니다. 원래 호출자와 원래 작성자가 다른 상황은 원래 작성자가 다른 프로세스에 대한 참조를 전달하고 다른 프로세스가 호출 시퀀스를 시작하는 상황입니다.

다음 시나리오에서는 이 메서드의 기능을 보여 줍니다.

  1. A 서버에서 사용자 A로 실행되는 기본 프로세스 1은 사용자 B로 실행되는 서버 B에서 개체 X를 만듭니다.
  2. 그런 다음 기본 프로세스 1은 개체 X에 대한 참조를 기본 프로세스 2에 전달하고 서버 D에서 사용자 D로 실행됩니다.
  3. 기본 프로세스 2는 해당 참조를 사용하여 개체 X를 호출합니다.
  4. 그런 다음 개체 X는 서버 C에서 실행되는 개체 Y를 호출합니다. 개체 Y가 GetOriginalCallerName을 호출하면 원래 개체를 만든 사용자 A가 아니라 사용자 D의 이름이 반환됩니다.
체인을 따라 개체가 ObjectContext::CreateInstance 또는 ITransactionContext::CreateInstance 이외의 다른 수단으로 만들어진 경우 원래 호출자의 경로가 끊어집니다. 예를 들어 기본 프로세스 1에서 CoCreateInstance 를 사용하여 개체 X를 만드는 경우 개체 Y 가 GetOriginalCallerName을 호출할 때 다시 가져오는 이름은 사용자 D가 아닌 사용자 B의 이름이 됩니다. 이는 호출 시퀀스가 개체의 컨텍스트를 통해 다시 추적되고 COM+가 ObjectContext::CreateInstance 또는 ITransactionContext::CreateInstance를 사용하여 만든 개체에 대해서만 컨텍스트를 만들 수 있기 때문입니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 comsvcs.h

추가 정보

SecurityProperty