Compartilhar via


Método ICallFrame::Marshal (callobj.h)

Realiza marshaling do quadro de chamadas transformando seus dados acessíveis em um buffer simples sem perturbar o quadro.

Sintaxe

HRESULT Marshal(
  [in]  CALLFRAME_MARSHALCONTEXT *pmshlContext,
  [in]  MSHLFLAGS                mshlflags,
  [in]  PVOID                    pBuffer,
  [in]  ULONG                    cbBuffer,
  [out] ULONG                    *pcbBufferUsed,
  [out] RPCOLEDATAREP            *pdataRep,
  [out] ULONG                    *prpcFlags
);

Parâmetros

[in] pmshlContext

Um ponteiro para a estrutura CALLFRAME_MARSHALCONTEXT que contém informações de contexto sobre como o marshalling é realizado.

[in] mshlflags

Sinalizador que indica se os dados a serem empacotados devem ser transmitidos de volta para o processo do cliente - o caso normal - ou gravados em uma tabela global, em que eles podem ser recuperados por vários clientes. Os valores possíveis são da enumeração MSHLFLAGS .

[in] pBuffer

Um ponteiro para o buffer no qual os dados em marshaling devem ser colocados.

[in] cbBuffer

O tamanho do buffer, em bytes.

[out] pcbBufferUsed

Recebe o tamanho do buffer que foi realmente usado. Esse parâmetro é opcional.

[out] pdataRep

Recebe a representação de dados NDR com a qual os dados foram empacotados. Esse parâmetro é opcional. Para obter mais informações, consulte IRpcChannelBuffer::GetBuffer.

[out] prpcFlags

Recebe um sinalizador RPC associado à chamada. Esse parâmetro é opcional. Para obter mais informações, consulte IRpcChannelBuffer::GetBuffer.

Valor retornado

Esse método pode retornar os valores a seguir.

Código de retorno Descrição
S_OK
O método foi concluído com sucesso.
E_UNEXPECTED
Ocorreu um erro inesperado.

Comentários

Ao realizar marshaling das versões [In] dos parâmetros [in, out] estão presentes e as versões [out] são indefinidas. Ao realizar marshaling de parâmetros [out], os valores são válidos.

Se esse método retornar um erro, o chamador não poderá limpo-lo. Recursos como memória alocada transitóriamente durante a tentativa de marshaling foram liberados.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho callobj.h

Confira também

ICallFrame