다음을 통해 공유


IMarshal::UnmarshalInterface 메서드(objidl.h)

인터페이스 포인터를 숨기지 않습니다.

구문

HRESULT UnmarshalInterface(
  [in]  IStream *pStm,
  [in]  REFIID  riid,
  [out] void    **ppv
);

매개 변수

[in] pStm

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

[in] riid

숨기지 않을 인터페이스의 식별자에 대한 참조입니다.

[out] ppv

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

반환 값

이 메서드는 E_FAIL 표준 반환 값과 다음 값을 반환할 수 있습니다.

반환 코드 Description
S_OK
인터페이스 포인터가 성공적으로 숨기지 않았습니다.
E_NOINTERFACE
지정된 인터페이스는 지원되지 않습니다.

설명

경계 해제가 발생하는 프로세스의 COM 라이브러리는 이 메서드의 프록시 구현을 호출합니다.

발신자에 대한 참고 사항

이 메서드는 직접 호출하지 않습니다. 그러나 CoUnmarshalInterface 호출을 통해 간접적으로 호출할 수 있는 상황이 있습니다. 예를 들어 스텁을 구현하는 경우 스텁이 메서드 호출에서 매개 변수로 인터페이스 포인터를 수신할 때 구현에서 CoUnmarshalInterface 를 호출합니다.

구현자에 대한 참고 사항

프록시의 구현은 원래 개체의 IMarshal::MarshalInterface 구현에 의해 스트림에 기록된 데이터를 읽고 해당 데이터를 사용하여 원래 개체의 IMarshal::GetUnmarshalClass 구현에 대한 마샬링 스텁의 호출에 의해 CLSID가 반환된 프록시 개체를 초기화해야 합니다.

적절한 인터페이스 포인터를 반환하기 위해 프록시 구현은 단순히 자체적으로 QueryInterface 를 호출하여 riidppv 매개 변수를 전달할 수 있습니다. 그러나 UnmarshalInterface 의 구현은 다른 개체를 자유롭게 만들 수 있으며 필요한 경우 포인터를 반환합니다.

종료 직전에 오류가 발생하더라도 구현은 데이터를 읽은 마지막 바이트 직후 스트림의 검색 포인터 위치를 변경해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 objidl.h(ObjIdl.h 포함)

추가 정보

CoUnmarshalInterface

IMarshal