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 |
---|---|
|
A instância IMarshal foi retornada com êxito. |
|
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:
- Determina se pUnk é NULL.
- 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.
- 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 |