Funzione CreateGenericComposite (objbase.h)

Esegue una composizione generica di due moniker e fornisce un puntatore al moniker composito risultante.

Sintassi

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

Parametri

[in, optional] pmkFirst

Puntatore al moniker da comporre a sinistra del moniker a cui punta pmkRest. Può puntare a qualsiasi tipo di moniker, incluso un composito generico.

[in, optional] pmkRest

Puntatore al moniker da comporre a destra del moniker a cui pmkFirst punta. Può puntare a qualsiasi tipo di moniker compatibile con il tipo di moniker pmkRest , incluso un composito generico.

[out] ppmkComposite

Indirizzo di una variabile puntatore IMoniker* che riceve il puntatore dell'interfaccia all'oggetto moniker composito che è il risultato della composizione di pmkFirst e pmkRest. Questo oggetto supporta l'implementazione del moniker composito OLE di IMoniker. In caso di esito positivo, la funzione ha chiamato AddRef nel moniker e il chiamante è responsabile della chiamata a Release. Se pmkFirst o pmkRest sono NULL, il puntatore fornito è quello non NULL. Se sia pmkFirst che pmkRest sono NULL o se si verifica un errore, il puntatore restituito è NULL.

Valore restituito

Questa funzione può restituire il valore restituito standard E_OUTOFMEMORY, nonché i valori seguenti.

Codice restituito Descrizione
S_OK
I moniker di input sono stati composti correttamente.
MK_E_SYNTAX
Impossibile comporre i due moniker a causa di un errore nella sintassi di un percorso, ad esempio se pmkFirst e pmkRest sono moniker di file basati su percorsi assoluti.

Commenti

CreateGenericComposite aggiunge due moniker a uno. Le classi moniker aggiunte possono essere diverse, soggette solo alle regole di composizione. Chiamare questa funzione solo se si sta scrivendo una nuova classe moniker implementando l'interfaccia IMoniker , all'interno di un'implementazione di IMoniker::ComposeWith che include funzionalità di composizione generiche.

I provider moniker devono chiamare ComposeWith per comporre due moniker insieme. Le implementazioni di ComposeWith devono (come per le implementazioni OLE) tentare, quando ragionevole per la classe, di eseguire prima le composizioni non generiche, in cui vengono combinati due moniker della stessa classe. Se non è possibile, l'implementazione può chiamare CreateGenericComposite per eseguire una composizione generica, che combina due moniker di classi diverse, all'interno delle regole di composizione. È possibile definire nuovi tipi di composizioni non generiche se si scrive una nuova classe moniker.

Durante il processo di composizione dei due moniker, CreateGenericComposite rende tutte le possibili semplificazioni. Si consideri l'esempio in cui pmkFirst è il moniker composito generico, A + B + C e pmkRest è il moniker composito generico, C -1 + B -1 + Z (dove C -1 è l'inverso di C). La funzione compone prima C a C -1, che compone in nulla. Quindi compone B e B -1 per niente. Infine, compone A a Z e fornisce un puntatore al moniker composito generico, A + Z.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [app desktop | App UWP]
Server minimo supportato Windows 2000 Server [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione objbase.h
Libreria Ole32.lib
DLL Ole32.dll
Set di API ext-ms-win-com-ole32-l1-1-5 (introdotta in Windows 10 versione 10.0.15063)

Vedi anche

Imoniker

IMoniker::ComposeWith