IMarshal::UnmarshalInterface 메서드(objidlbase.h)
인터페이스 포인터를 언마샬링합니다.
구문
HRESULT UnmarshalInterface(
[in] IStream *pStm,
[in] REFIID riid,
[out] void **ppv
);
매개 변수
[in] pStm
인터페이스 포인터를 숨기지 않을 스트림에 대한 포인터입니다.
[in] riid
마스할 인터페이스의 식별자에 대한 참조입니다.
[out] ppv
인터페이스 포인터를 수신하는 포인터 변수의 주소입니다. 반환이 성공적이면 *ppv 에는 마마샬링 해제할 인터페이스의 요청된 인터페이스 포인터가 포함됩니다.
반환 값
이 메서드는 다음 값뿐만 아니라 E_FAIL 표준 반환 값을 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
인터페이스 포인터가 성공적으로 숨을 들이쉬지 않았습니다. |
|
지정된 인터페이스는 지원되지 않습니다. |
설명
unmarshaling이 발생하는 프로세스의 COM 라이브러리는 이 메서드의 프록시 구현을 호출합니다.
발신자에게 참고 사항
이 메서드는 직접 호출하지 않습니다. 그러나 CoUnmarshalInterface에 대한 호출을 통해 간접적으로 호출할 수 있는 경우도 있습니다. 예를 들어 스텁을 구현하는 경우 스텁이 메서드 호출에서 매개 변수로 인터페이스 포인터를 수신할 때 구현에서 CoUnmarshalInterface 를 호출합니다.구현자에 대한 참고 사항
프록시의 구현은 원래 개체의 IMarshal::MarshalInterface 구현에 의해 스트림에 기록된 데이터를 읽고 해당 데이터를 사용하여 원래 개체의 IMarshal::GetUnmarshalClass 구현에 대한 마샬링 스텁의 호출에 의해 CLSID가 반환된 프록시 개체를 초기화해야 합니다.적절한 인터페이스 포인터를 반환하기 위해 프록시 구현은 단순히 자체 적으로 QueryInterface 를 호출하여 riid 및 ppv 매개 변수를 전달할 수 있습니다. 그러나 UnmarshalInterface 의 구현은 다른 개체를 자유롭게 만들 수 있으며 필요한 경우 포인터를 반환합니다.
종료 직전에 오류가 발생하더라도 구현은 마지막 데이터 읽은 바이트 직후 스트림의 검색 포인터 위치를 변경해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | objidlbase.h(ObjIdl.h 포함) |