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 |
---|---|
|
인터페이스 포인터가 성공적으로 숨을 들이쉬지 않았습니다. |
|
pStm 이 잘못된 포인터입니다. |
|
이 함수가 호출되기 전에 현재 스레드에서 CoInitialize 또는 OleInitialize 함수가 호출되지 않았습니다. |
|
개체 애플리케이션이 원격 시스템에서 연결이 끊어졌습니다(예: CoDisconnectObject 함수 호출의 결과). |
|
등록 데이터베이스를 읽는 동안 오류가 발생했습니다. |
|
요청된 인터페이스에 대한 이 함수의 최종 QueryInterface 는 E_NOINTERFACE 반환됩니다. |
설명
중요
보안 참고: 신뢰할 수 없는 데이터로 이 메서드를 호출하는 것은 보안 위험입니다. 신뢰할 수 있는 데이터로만 이 메서드를 호출하세요.
- 프록시의 instance 만드는 데 사용할 CLSID 스트림에서 읽습니다.
- 경계 해제를 수행하는 프록시에 대한 IMarshal 포인터를 가져옵니다. 개체가 COM의 기본 마샬링 구현을 사용하는 경우 가져온 포인터는 제네릭 프록시 개체의 instance. 동일한 프로세스에서 두 스레드 간에 마샬링이 발생하는 경우 포인터는 in-process 자유 스레드 마샬러의 instance. 개체가 자체 마샬링 코드를 제공하는 경우 CoUnmarshalInterface 는 CoCreateInstance 함수를 호출하여 마샬링 스트림에서 읽은 CLSID를 전달합니다. CoCreateInstance는 개체 프록시의 instance 만들고 프록시에 대한 IMarshal 인터페이스 포인터를 반환합니다.
- 함수는 획득한 IMarshal 인터페이스 포인터를 사용하여 IMarshal::UnmarshalInterface 를 호출하고, 해당하는 경우 IMarshal::ReleaseMarshalData를 호출합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | combaseapi.h(Objbase.h 포함) |
라이브러리 | Ole32.lib |
DLL | Ole32.dll |