Compartilhar via


Função CreateGenericComposite (objbase.h)

Executa uma composição genérica de dois monikers e fornece um ponteiro para o moniker composto resultante.

Sintaxe

HRESULT CreateGenericComposite(
  [in, optional] LPMONIKER pmkFirst,
  [in, optional] LPMONIKER pmkRest,
  [out]          LPMONIKER *ppmkComposite
);

Parâmetros

[in, optional] pmkFirst

Um ponteiro para o moniker a ser composto à esquerda do moniker para o qual pmkRest aponta. Pode apontar para qualquer tipo de moniker, incluindo uma composição genérica.

[in, optional] pmkRest

Um ponteiro para o moniker a ser composto à direita do moniker ao qual pmkFirst aponta. Pode apontar para qualquer tipo de moniker compatível com o tipo do moniker pmkRest , incluindo uma composição genérica.

[out] ppmkComposite

O endereço de uma variável de ponteiro IMoniker* que recebe o ponteiro de interface para o objeto moniker composto que é o resultado da composição de pmkFirst e pmkRest. Esse objeto dá suporte à implementação do moniker composto OLE do IMoniker. Quando bem-sucedida, a função chamou AddRef no moniker e o chamador é responsável por chamar Release. Se pmkFirst ou pmkRest forem NULL, o ponteiro fornecido será aquele que não é NULL. Se pmkFirst e pmkRest forem NULL ou se ocorrer um erro, o ponteiro retornado será NULL.

Retornar valor

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

Código de retorno Descrição
S_OK
Os monikers de entrada foram compostos com êxito.
MK_E_SYNTAX
Os dois monikers não puderam ser compostos devido a um erro na sintaxe de um caminho (por exemplo, se pmkFirst e pmkRest forem monikers de arquivo com base em caminhos absolutos).

Comentários

CreateGenericComposite une dois monikers em um. As classes de moniker que estão sendo unidas podem ser diferentes, sujeitas apenas às regras de composição. Chame essa função somente se você estiver escrevendo uma nova classe moniker implementando a interface IMoniker , dentro de uma implementação de IMoniker::ComposeWith que inclui a funcionalidade de composição genérica.

Os provedores moniker devem chamar ComposeWith para compor dois monikers juntos. As implementações de ComposeWith devem (assim como as implementações OLE) tentar, quando razoável para a classe, executar composições não genéricas primeiro, nas quais dois monikers da mesma classe são combinados. Se isso não for possível, a implementação poderá chamar CreateGenericComposite para fazer uma composição genérica, que combina dois monikers de classes diferentes, dentro das regras de composição. Você poderá definir novos tipos de composições não genéricas se escrever uma nova classe de moniker.

Durante o processo de composição dos dois monikers, CreateGenericComposite torna todas as simplificações possíveis. Considere o exemplo em que pmkFirst é o moniker composto genérico, A + B + C e pmkRest é o moniker composto genérico, C -1 + B -1 + Z (em que C -1 é o inverso de C). A função primeiro compõe C a C -1, que não compõe nada. Em seguida, ele compõe B e B -1 para nada. Por fim, ele compõe A a Z e fornece um ponteiro para o moniker composto genérico, A + Z.

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 objbase.h
Biblioteca Ole32.lib
DLL Ole32.dll
Conjunto de APIs ext-ms-win-com-ole32-l1-1-5 (introduzido no Windows 10, versão 10.0.15063)

Confira também

Imoniker

IMoniker::ComposeWith