ISecurityProperty::GetDirectCallerSID 메서드(comsvcs.h)

현재 실행 중인 메서드를 호출한 외부 프로세스의 보안 식별자를 검색합니다. ISecurityCallContext를 사용하여 이 정보를 가져올 수도 있습니다.

구문

HRESULT GetDirectCallerSID(
  [out] PSID *pSID
);

매개 변수

[out] pSID

현재 메서드가 호출된 프로세스의 보안 ID에 대한 참조입니다.

반환 값

이 메서드는 다음 값뿐만 아니라 표준 반환 값 E_INVALIDARG, E_OUTOFMEMORY, E_UNEXPECTED 및 E_FAIL 반환할 수 있습니다.

반환 코드 Description
S_OK
현재 메서드를 호출한 프로세스의 보안 ID는 pSid 매개 변수에 반환됩니다.
CONTEXT_E_NOCONTEXT
구성 요소를 애플리케이션으로 가져오지 않았거나 COM+ CreateInstance 메서드 중 하나를 사용하여 개체를 만들지 않았기 때문에 현재 개체에 연결된 컨텍스트가 없습니다.

설명

GetDirectCallerSID 메서드를 사용하여 개체의 현재 실행 중인 메서드를 호출한 프로세스의 보안 ID를 확인합니다. 보안은 프로세스 경계를 넘어 적용됩니다. 즉 , GetDirectCallerSID 에서 반환된 보안 ID는 현재 개체가 실행 중인 프로세스에 호출된 프로세스와 연결된 보안 ID이며, 반드시 개체 자체에 대한 즉각적인 호출자가 아닙니다. 개체가 동일한 프로세스 내의 다른 개체를 호출하는 경우 두 번째 개체가 GetDirectCallerSID 를 호출할 때 직접 호출한 개체의 보안 ID가 아니라 자체 프로세스 경계 외부에 있는 가장 즉각적인 호출자의 보안 ID를 가져옵니다.

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

  • 서버 A에서 실행되는 기본 프로세스(사용자 A)는 사용자 B로 실행되는 서버 B의 개체 X를 호출합니다. 그런 다음 개체 X는 서버 C에서 실행되는 Object Y를 호출합니다. Object Y가 GetDirectCallerSID를 호출하면 사용자 B의 보안 ID가 반환됩니다.
  • 서버 A에서 사용자 A로 실행되는 기본 프로세스는 서버 B에서 개체 X를 호출하고 사용자 B로 실행됩니다. 그런 다음 개체 X는 서버 B에서도 개체 X와 동일한 프로세스에서 실행되는 Object Y를 호출합니다. Object Y가 GetDirectCallerSID를 호출하면 사용자 A의 보안 ID가 반환되고 사용자 B의 보안 ID가 반환되지 않습니다.
사용이 완료되면 보안 ID에서 ISecurityProperty::ReleaseSID 를 호출해야 합니다.

요구 사항

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

추가 정보

ISecurityProperty