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