Função CoGetStandardMarshal (combaseapi.h)

Cria um objeto de marshaling padrão ou padrão no processo do cliente ou no processo do servidor, dependendo do chamador, e retorna um ponteiro para a implementação IMarshal desse objeto.

Sintaxe

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

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.

[in] dwDestContext

O contexto de destino em que a interface especificada deve ser desmarsalada. Os valores vêm da enumeração MSHCTX. Pode ocorrer unmarshaling em outro apartament do processo atual (MSHCTX_INPROC) ou em outro processo no mesmo computador do processo atual (MSHCTX_LOCAL).

[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 (o caso normal) ou gravados em uma tabela global em que eles podem ser recuperados por vários clientes. Os valores vêm da enumeração MSHLFLAGS .

[out] ppMarshal

O endereço da variável de ponteiro IMarshal* que recebe o ponteiro de interface para o marshaler padrão.

Retornar valor

Essa função pode retornar os valores retornados padrão E_FAIL, E_OUTOFMEMORY e E_UNEXPECTED, bem como os valores a seguir.

Código de retorno Descrição
S_OK
A instância IMarshal foi retornada com êxito.
CO_E_NOTINITIALIZED
Antes que essa função possa ser chamada, a função CoInitialize ou OleInitialize deve ser chamada no thread atual.

Comentários

A função CoGetStandardMarshal cria um objeto de marshaling padrão ou padrão no processo do cliente ou no processo do servidor, como pode ser necessário, e retorna o ponteiro IMarshal desse objeto para o chamador. Se você implementar o IMarshal, convém que sua implementação chame CoGetStandardMarshal como uma maneira de delegar à implementação padrão do COM quaisquer contextos de destino que você não entenda totalmente ou queira manipular. Caso contrário, você pode ignorar essa função, que o COM chama como parte de seus procedimentos de marshaling internos.

Quando a biblioteca COM no processo do cliente recebe um ponteiro de interface marshaled, ela procura um CLSID a ser usado na criação de um proxy para fins de desmarcação do pacote. Se o pacote não contiver um CLSID para o proxy, COM chamará CoGetStandardMarshal, passando um valor nullpUnk . Essa função cria um proxy padrão no processo do cliente e retorna um ponteiro para a implementação de IMarshal desse proxy. COM usa esse ponteiro para chamar CoUnmarshalInterface para recuperar o ponteiro para a interface solicitada.

Se a implementação do aplicativo de servidor OLE de IMarshal chamar CoGetStandardMarshal, você deverá passar o IID de (riid) e um ponteiro para (pUnk), a interface que está sendo solicitada.

Essa função executa as seguintes tarefas:

  1. Determina se pUnk é NULL.
  2. Se pUnk for NULL, criará um proxy de interface padrão no processo do cliente para o riid especificado e retornará o ponteiro IMarshal do proxy.
  3. Se pUnk não for NULL, verificará se já existe um marshaler para o objeto, cria um novo, se necessário, e retorna o ponteiro IMarshal do marshaler.

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

IMarshal