Compartir a través de


Función CoGetMarshalSizeMax (combaseapi.h)

Devuelve un límite superior en el número de bytes necesarios para calcular las referencias del puntero de interfaz especificado al objeto especificado.

Sintaxis

HRESULT CoGetMarshalSizeMax(
  [out]          ULONG     *pulSize,
  [in]           REFIID    riid,
  [in]           LPUNKNOWN pUnk,
  [in]           DWORD     dwDestContext,
  [in, optional] LPVOID    pvDestContext,
  [in]           DWORD     mshlflags
);

Parámetros

[out] pulSize

Puntero al valor de límite superior del tamaño, en bytes, del paquete de datos que se va a escribir en el flujo de serialización. Si este parámetro es 0, se desconoce el tamaño del paquete.

[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. Esta interfaz debe derivarse de la interfaz IUnknown .

[in] dwDestContext

Contexto de destino en el que la interfaz especificada se va a desmarmar. Los valores de dwDestContext proceden de la enumeración MSHCTX.

[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 transmitir de vuelta al proceso de cliente en el caso normal o se escriben en una tabla global, donde varios clientes pueden recuperarlos. Los valores proceden de la enumeración MSHLFLAGS.

Valor devuelto

Esta función puede devolver el valor devuelto estándar E_UNEXPECTED, así como los siguientes valores.

Código devuelto Descripción
S_OK
El límite superior se devolvió correctamente.
CO_E_NOTINITIALIZED
Para poder llamar a esta función, se debe llamar a la función CoInitialize o OleInitialize .

Comentarios

Esta función realiza las siguientes tareas:

  1. Consulta el objeto de un puntero IMarshal o, si el objeto no implementa IMarshal, obtiene un puntero al serializador estándar de COM.
  2. Con el puntero obtenido en el elemento anterior, llama a IMarshal::GetMarshalSizeMax.
  3. Agrega al valor devuelto por la llamada a GetMarshalSizeMax el tamaño del encabezado de datos de serialización y, posiblemente, el del CLSID de proxy para obtener el tamaño máximo en bytes de la cantidad de datos que se van a escribir en el flujo de serialización.
No llama explícitamente a esta función a menos que implemente IMarshal, en cuyo caso el código auxiliar de serialización debe llamar a esta función para obtener el tamaño correcto del paquete de datos que se va a serializar.

Se garantiza que el valor devuelto por este método es válido solo siempre que el estado interno del objeto que se serializa no cambie. Por lo tanto, la serialización real debe realizarse inmediatamente después de que se devuelva esta función, o el código auxiliar corre el riesgo de que el objeto, debido a algún cambio en el estado, podría requerir más memoria para serializar la que se indicó originalmente.

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

Consulte también

CoMarshalInterface

IMarshal::GetMarshalSizeMax