Función CoGetStandardMarshal (combaseapi.h)
Crea un objeto de serialización predeterminado o estándar en el proceso de cliente o en el proceso del servidor, según el autor de la llamada, y devuelve un puntero a la implementación de IMarshal de ese objeto.
Sintaxis
HRESULT CoGetStandardMarshal(
[in] REFIID riid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwDestContext,
[in, optional] LPVOID pvDestContext,
[in] DWORD mshlflags,
[out] LPMARSHAL *ppMarshal
);
Parámetros
[in] riid
Referencia al identificador de la interfaz cuyo puntero se va a serializar. Esta interfaz debe derivarse de la interfaz IUnknown .
[in] pUnk
Puntero a la interfaz que se va a serializar.
[in] dwDestContext
Contexto de destino donde se va a desmarcar la interfaz especificada. Los valores proceden de la enumeración MSHCTX. La anulación de la serialización puede producirse en otro apartamento del proceso actual (MSHCTX_INPROC) o en otro proceso que se encuentra en el mismo equipo que el proceso actual (MSHCTX_LOCAL).
[in, optional] pvDestContext
Este parámetro está reservado y debe ser NULL.
[in] mshlflags
Indica si los datos que se van a serializar se van a devolver al proceso de cliente (el caso normal) o se escriben en una tabla global donde varios clientes pueden recuperarlos. Los valores proceden de la enumeración MSHLFLAGS .
[out] ppMarshal
Dirección de la variable de puntero IMarshal* que recibe el puntero de interfaz al serializador estándar.
Valor devuelto
Esta función puede devolver los valores devueltos estándar E_FAIL, E_OUTOFMEMORY y E_UNEXPECTED, así como los siguientes valores.
Código devuelto | Descripción |
---|---|
|
La instancia de IMarshal se devolvió correctamente. |
|
Para poder llamar a esta función, se debe llamar a la función CoInitialize o OleInitialize en el subproceso actual. |
Comentarios
La función CoGetStandardMarshal crea un objeto de serialización predeterminado o estándar en el proceso de cliente o en el proceso de servidor, según sea necesario, y devuelve el puntero IMarshal del objeto al autor de la llamada. Si implementa IMarshal, es posible que quiera que la implementación llame a CoGetStandardMarshal como una manera de delegar en la implementación predeterminada de COM los contextos de destino que no comprenda ni quiera controlar. De lo contrario, puede omitir esta función, que llama COM como parte de sus procedimientos de serialización internos.
Cuando la biblioteca COM del proceso de cliente recibe un puntero de interfaz serializado, busca que se use un CLSID para crear un proxy con el fin de desacoplar el paquete. Si el paquete no contiene un CLSID para el proxy, COM llama a CoGetStandardMarshal, pasando un valor pUnkNULL. Esta función crea un proxy estándar en el proceso de cliente y devuelve un puntero a la implementación del proxy de IMarshal. COM usa este puntero para llamar a CoUnmarshalInterface para recuperar el puntero a la interfaz solicitada.
Si la implementación de la aplicación de servidor OLE de IMarshal llama a CoGetStandardMarshal, debe pasar el IID de (riid) y un puntero a (pUnk), la interfaz que se solicita.
Esta función realiza las siguientes tareas:
- Determina si pUnk es NULL.
- Si pUnk es NULL, crea un proxy de interfaz estándar en el proceso de cliente para el riid especificado y devuelve el puntero IMarshal del proxy.
- Si pUnk no es NULL, comprueba si ya existe un serializador para el objeto, crea uno nuevo si es necesario y devuelve el puntero IMarshal del serializador.
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 | combaseapi.h (incluya Objbase.h) |
Library | Ole32.lib |
Archivo DLL | Ole32.dll |