Função CoGetMarshalSizeMax (combaseapi.h)

Retorna um limite superior no número de bytes necessários para realizar marshaling do ponteiro de interface especificado para o objeto especificado.

Sintaxe

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

Um ponteiro para o valor de limite superior no tamanho, em bytes, do pacote de dados a ser gravado no fluxo de marshaling. Se esse parâmetro for 0, o tamanho do pacote será desconhecido.

[in] riid

Uma referência ao identificador da interface cujo ponteiro deve ser empacotado. Essa interface deve ser derivada da interface IUnknown .

[in] pUnk

Um ponteiro para a interface a ser empacotada. Essa interface deve ser derivada da interface IUnknown .

[in] dwDestContext

O contexto de destino em que a interface especificada deve ser desmarsalada. Os valores de dwDestContext vêm da enumeração MSHCTX.

[in, optional] pvDestContext

Esse parâmetro é reservado e deve ser NULL.

[in] mshlflags

Indica se os dados a serem empacotados devem ser transmitidos de volta para o processo do cliente, caso normal ou gravados em uma tabela global, em que podem ser recuperados por vários clientes. Os valores vêm da enumeração MSHLFLAGS.

Retornar valor

Essa função pode retornar o valor retornado padrão E_UNEXPECTED, bem como os valores a seguir.

Código de retorno Descrição
S_OK
O limite superior foi retornado com êxito.
CO_E_NOTINITIALIZED
Antes que essa função possa ser chamada, a função CoInitialize ou OleInitialize deve ser chamada.

Comentários

Essa função executa as seguintes tarefas:

  1. Consulta o objeto para um ponteiro IMarshal ou, se o objeto não implementar IMarshal, obtém um ponteiro para o marshaler padrão do COM.
  2. Usando o ponteiro obtido no item anterior, chama IMarshal::GetMarshalSizeMax.
  3. Adiciona ao valor retornado pela chamada a GetMarshalSizeMax o tamanho do cabeçalho de dados de marshaling e, possivelmente, o do PROXY CLSID para obter o tamanho máximo em bytes da quantidade de dados a serem gravados no fluxo de marshaling.
Você não chama explicitamente essa função, a menos que esteja implementando IMarshal. Nesse caso, o stub de marshaling deve chamar essa função para obter o tamanho correto do pacote de dados a ser realizado em marshaling.

O valor retornado por esse método tem a garantia de ser válido apenas desde que o estado interno do objeto que está sendo realizado em marshaling não seja alterado. Portanto, o marshaling real deve ser feito imediatamente após o retorno dessa função ou o stub executa o risco de que o objeto, devido a alguma alteração no estado, possa exigir mais memória para realizar marshaling do que o indicado originalmente.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho combaseapi.h (inclua Objbase.h)
Biblioteca Ole32.lib
DLL Ole32.dll

Confira também

Comarshalinterface

IMarshal::GetMarshalSizeMax