Compartilhar via


CoMarshalInterface

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função grava em um transmitir os dados exigido para inicializar um objeto proxy em algum processo cliente. A biblioteca COM em chamadas processo de cliente a CoUnmarshalInterface função para extrair os dados e inicializar o proxy. CoMarshalInterface Pode empacotar somente interfaces derivado de IUnknown.

Syntax

STDAPI CoMarshalInterface(
  IStream* pStm,
  REFIID riid,
  IUnknown* pUnk,
  DWORD dwDestContext,
  void* pvDestContext,
  DWORD mshlflags
);

Parameters

  • pStm
    [no] Ponteiro para a transmitir a ser usado durante empacotamento.
  • riid
    [no] Referência ao identificador da interface para ser empacotado. Esta interface deve ser derivado a partir de IUnknown interface.
  • pUnk
    [no] Ponteiro para a interface para ser empacotado. Esta interface deve ser derivado a partir de IUnknown interface.
  • dwDestContext
    [no] Contexto de destino em que a interface especificada deve ser unmarshaled. Valores para dwDestContext provenientes de enumeração MSHCTX.

    Atualmente, desempacotamento pode ocorrer em outro compartimento do atual processo (MSHCTX_INPROC), em outro processo no mesmo computador como o atual processo (MSHCTX_LOCAL), ou em um processo em uma máquina diferente (MSHCTX_DIFFERENTMACHINE).

  • pvDestContext
    [no] Reservado para uso futuro; deve ser NULL.
  • mshlflags
    [no] Sinalizador especificando se os dados ser empacotado é para serem transmitidos voltar para o processo cliente — a maiúsculas e minúsculas normal — ou gravado em uma tabela global, onde ele pode ser recuperado por múltiplo clientes. Valores provenientes de MSHLFLAGS enumeração.

Return Value

O padrão oferece suporte a essa função retornar valores E_FAIL, E_OUTOFMEMORY e E_UNEXPECTED, bem como o seguinte:

  • S_OK
    O ponteiro interface foi empacotado com êxito.
  • CO_E_NOTINITIALIZED
    O CoInitialize função não foi chamado na atual segmento antes essa função foi chamado.
  • IStreamErros
    Essa função também pode retornar qualquer um da transmitir-erro de acesso valores retornados pela IStream interface.

Remarks

O CoMarshalInterface função marshals a interface referido por riid sobre o objeto cujos IUnknown implementação é apontada pelo pUnk. Para fazer isso, o CoMarshalInterface função executa a seguinte tarefas:

  1. Consultas de objeto para um ponteiro para o IMarshal interface. Se o objeto não implementar IMarshal, que significa que ele depende COM para fornecer suporte empacotamento, CoMarshalInterface Obtém um ponteiro para implementação usar como padrão do COM de IMarshal.
  2. Obtém o CLSID do proxy do objeto por chamado IMarshal::GetUnmarshalClass, usando que IMarshal ponteiro interface foi retornado.
  3. Grava a CLSID do proxy de transmitir a ser usado para empacotamento.
  4. Controla o ponteiro interface por chamado IMarshal::MarshalInterface.

Se você estiver implementando COM existente interfaces ou definir suas interfaces usando o Microsoft Interface Definition Language (MIDL), o chamar proxies e stubs MIDL-generated CoMarshalInterface para você.

Se você estiver escrevendo seus próprio proxies stubs, seu proxy codificar e codificar stub deve cada chamar CoMarshalInterface Para os ponteiros interface empacotar corretamente. Chamando IMarshal diretamente do proxy e stub codificar não é recomendado.

Se você estiver escrevendo seu próprio implementação de IMarshale seu proxy precisa acessar para um objeto particular, seu aplicativo pode incluir um ponteiro interface para esse objeto como parte de dados gravados de transmitir. Para usar usar como padrão empacotamento implementação do COM ao passar o ponteiro interface, seu aplicativo pode chamar CoMarshalInterface Sobre o objeto.

Para determinar se a plataforma oferece suporte a essa função, consulte Determinando suporte COM APIs.

Requirements

Header objbase.h
Library ole32.lib
Windows Embedded CE Windows CE 3.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

COM Functions