CoUnmarshalInterface 함수(combaseapi.h)

CoMarshalInterface 함수에 대한 이전 호출에 의해 스트림에 기록된 데이터를 사용하여 새로 만든 프록시를 초기화하고 해당 프록시에 대한 인터페이스 포인터를 반환합니다.

구문

HRESULT CoUnmarshalInterface(
  [in]  LPSTREAM pStm,
  [in]  REFIID   riid,
  [out] LPVOID   *ppv
);

매개 변수

[in] pStm

인터페이스를 숨기지 않을 스트림에 대한 포인터입니다.

[in] riid

마스할 인터페이스의 식별자에 대한 참조입니다. IID_NULL 경우 반환된 인터페이스는 스트림 objref.iid에서 정의한 인터페이스입니다.

[out] ppv

riid에서 요청된 인터페이스 포인터를 수신하는 포인터 변수의 주소입니다. 반환이 성공적이면 *ppv 에는 숨을 들이지 않은 인터페이스에 대해 요청된 인터페이스 포인터가 포함됩니다.

반환 값

이 함수는 E_FAIL 표준 반환 값, CoCreateInstance에서 반환된 오류 및 다음 값을 반환할 수 있습니다.

반환 코드 Description
S_OK
인터페이스 포인터가 성공적으로 숨을 들이쉬지 않았습니다.
STG_E_INVALIDPOINTER
pStm 이 잘못된 포인터입니다.
CO_E_NOTINITIALIZED
이 함수가 호출되기 전에 현재 스레드에서 CoInitialize 또는 OleInitialize 함수가 호출되지 않았습니다.
CO_E_OBJNOTCONNECTED
개체 애플리케이션이 원격 시스템에서 연결이 끊어졌습니다(예: CoDisconnectObject 함수 호출의 결과).
REGDB_E_CLASSNOTREG
등록 데이터베이스를 읽는 동안 오류가 발생했습니다.
E_NOINTERFACE
요청된 인터페이스에 대한 이 함수의 최종 QueryInterface 는 E_NOINTERFACE 반환됩니다.

설명

중요  

보안 참고: 신뢰할 수 없는 데이터로 이 메서드를 호출하는 것은 보안 위험입니다. 신뢰할 수 있는 데이터로만 이 메서드를 호출하세요.

 
CoUnmarshalInterface 함수는 다음 작업을 수행합니다.
  1. 프록시의 instance 만드는 데 사용할 CLSID 스트림에서 읽습니다.
  2. 경계 해제를 수행하는 프록시에 대한 IMarshal 포인터를 가져옵니다. 개체가 COM의 기본 마샬링 구현을 사용하는 경우 가져온 포인터는 제네릭 프록시 개체의 instance. 동일한 프로세스에서 두 스레드 간에 마샬링이 발생하는 경우 포인터는 in-process 자유 스레드 마샬러의 instance. 개체가 자체 마샬링 코드를 제공하는 경우 CoUnmarshalInterfaceCoCreateInstance 함수를 호출하여 마샬링 스트림에서 읽은 CLSID를 전달합니다. CoCreateInstance는 개체 프록시의 instance 만들고 프록시에 대한 IMarshal 인터페이스 포인터를 반환합니다.
  3. 함수는 획득한 IMarshal 인터페이스 포인터를 사용하여 IMarshal::UnmarshalInterface 를 호출하고, 해당하는 경우 IMarshal::ReleaseMarshalData를 호출합니다.
이 함수의 기본 호출자는 인터페이스 포인터를 숨기는 인터페이스 프록시 또는 스텁 내에서 COM 자체입니다. 그러나 CoUnmarshalInterface를 호출할 수 있는 몇 가지 상황이 있습니다. 예를 들어 스텁을 구현하는 경우 스텁이 메서드 호출에서 매개 변수로 인터페이스 포인터를 수신할 때 구현에서 CoUnmarshalInterface 를 호출합니다.

요구 사항

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

추가 정보

CoMarshalInterface

IMarshal::UnmarshalInterface