Compartir a través de


Método IMarshal::UnmarshalInterface (objidl.h)

Desmarshala un puntero de interfaz.

Sintaxis

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

Parámetros

[in] pStm

Puntero a la secuencia desde la que se va a desmarcar el puntero de interfaz.

[in] riid

Referencia al identificador de la interfaz que se va a desmarcar.

[out] ppv

Dirección de la variable de puntero que recibe el puntero de interfaz. Tras la devolución correcta, *ppv contiene el puntero de interfaz solicitado de la interfaz que se va a desmarcar.

Valor devuelto

Este método puede devolver el valor devuelto estándar E_FAIL, así como los siguientes valores.

Código devuelto Descripción
S_OK
El puntero de interfaz se desmarshaló correctamente.
E_NOINTERFACE
No se admite la interfaz especificada.

Comentarios

La biblioteca COM del proceso en el que se va a producir un desmarshaling llama a la implementación del proxy de este método.

Notas a los autores de llamadas

No se llama a este método directamente. Sin embargo, hay algunas situaciones en las que podría llamarla indirectamente a través de una llamada a CoUnmarshalInterface. Por ejemplo, si va a implementar un código auxiliar, la implementación llamaría a CoUnmarshalInterface cuando el código auxiliar recibe un puntero de interfaz como parámetro en una llamada al método.

Notas para los implementadores

La implementación del proxy debe leer los datos escritos en la secuencia por la implementación del objeto original de IMarshal::MarshalInterface y usar esos datos para inicializar el objeto proxy cuyo CLSID devolvió la llamada del código auxiliar de serialización a la implementación del objeto original de IMarshal::GetUnmarshalClass.

Para devolver el puntero de interfaz adecuado, la implementación del proxy simplemente puede llamar a QueryInterface en sí misma, pasando los parámetros riid y ppv . Sin embargo, la implementación de UnmarshalInterface es libre de crear un objeto diferente y, si es necesario, devolverle un puntero.

Justo antes de salir, incluso si se sale con un error, la implementación debe cambiar la posición del puntero de búsqueda en la secuencia inmediatamente después del último byte de los datos leídos.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado objidl.h (incluya ObjIdl.h)

Consulte también

CoUnmarshalInterface

IMarshal