RoGetAgileReference 함수(combaseapi.h)

지정된 인터페이스에서 지정한 개체에 대한 민첩한 참조를 만듭니다.

구문

HRESULT RoGetAgileReference(
  [in]  AgileReferenceOptions options,
  [in]  REFIID                riid,
  [in]  IUnknown              *pUnk,
  [out] IAgileReference       **ppAgileReference
);

매개 변수

[in] options

등록 옵션입니다.

[in] riid

Agile 참조를 가져오는 개체의 인터페이스 ID입니다.

[in] pUnk

Agile 참조에 캡슐화할 인터페이스에 대한 포인터입니다. riid와 동일한 형식이어야 합니다. in-process 개체에 대한 포인터이거나 개체의 프록시에 대한 포인터일 수 있습니다.

[out] ppAgileReference

개체에 대한 Agile 참조입니다. Resolve 메서드를 호출하여 Resolve가 호출되는 아파트로 개체를 지역화합니다.

반환 값

이 함수는 이러한 값 중 하나를 반환할 수 있습니다.

반환 값 설명
S_OK
함수가 성공적으로 완료되었습니다.
E_INVALIDARG
의 options 매개 변수가 잘못되었습니다.
E_OUTOFMEMORY
메모리 부족 조건으로 인해 Agile 참조를 생성할 수 없습니다.
E_NOINTERFACE
pUnk 매개 변수는 riid 매개 변수로 지정된 인터페이스 ID를 지원하지 않습니다.
CO_E_NOT_SUPPORTED
개체는 INoMarshal 인터페이스를 구현합니다 .

설명

기존 개체에서 RoGetAgileReference 함수를 호출하여 개체에 대한 민첩한 참조를 요청합니다. 개체는 Agile일 수도 있지만 반환된 IAgileReference 는 agile입니다. Agile 참조는 IAgileReference 인터페이스를 사용하여 원래 개체를 검색하는 동일한 프로세스 내의 다른 아파트로 전달할 수 있습니다.

이는 개념적으로 기존 GIT(전역 인터페이스 테이블)와 비슷합니다. GIT와 상호 작용하는 대신 IAgileReference 를 가져와서 개체를 직접 검색하는 데 사용됩니다. GIT가 프로세스당 전용인 것처럼 Agile 참조는 프로세스별로 수행되며 마샬링할 수 없습니다.

Agile 참조 기능은 GIT에 대한 성능 향상을 제공합니다. Agile 참조는 기본적으로 즉시 마샬링을 수행하며, Agile 참조가 만들어진 위치와 다른 아파트의 민첩한 참조에서 개체가 검색되는 경우 아파트 간 호출을 저장합니다. 성능 향상을 위해 RoGetAgileReference 함수의 사용자는 동일한 인터페이스를 사용하여 IAgileReference를 만들고 원래 개체를 resolve 수 있습니다. 이렇게 하면 추가 QueryInterface 호출을 저장하여 확인된 개체에서 원하는 인터페이스를 가져옵니다.

예를 들어 IDemo 및 IExample 인터페이스를 구현하는 CDemoExample이라는 비 agile 개체가 있습니다. RoGetAgileReference 함수를 호출하고 IID_IDemo 개체를 전달합니다. 민첩한 IAgileReference 인터페이스 포인터를 다시 가져와서 다른 아파트로 전달할 수 있습니다. 다른 아파트에서 Resolve 메서드를 호출하고 IID_IExample. 이 아파트 내에서 사용할 수 있는 IExample 포인터를 다시 가져옵니다. 이 IExample 포인터는 원래 CDemoExample 개체에 연결된 IExample 프록시입니다. 민첩한 참조는 수동으로 스트림으로 마샬링하고 아파트 경계의 반대편에서 경계를 해제하는 등의 작업의 복잡성을 처리합니다.

요구 사항

요구 사항 값
지원되는 최소 클라이언트 Windows 8.1 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2012 R2 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 combaseapi.h
라이브러리 Ole32.lib
DLL Ole32.dll

추가 정보

AgileReferenceOptions

IAgileReference