Condividi tramite


Funzione CreateObjrefMoniker (objbase.h)

Crea un moniker OBJREF basato su un puntatore a un oggetto.

Sintassi

HRESULT CreateObjrefMoniker(
  [in, optional] LPUNKNOWN punk,
  [out]          LPMONIKER *ppmk
);

Parametri

[in, optional] punk

Puntatore all'interfaccia IUnknown nell'oggetto che il moniker deve rappresentare.

[out] ppmk

Indirizzo di un puntatore all'interfaccia IMoniker nel moniker OBJREF creato.

Valore restituito

Questa funzione può restituire i valori restituiti standard E_OUTOFMEMORY, E_UNEXPECTED e S_OK.

Commenti

I client usano moniker OBJREF per ottenere un puntatore marshalling a un oggetto in esecuzione nello spazio indirizzi dei server.

Il server chiama in genere CreateObjrefMoniker per creare un moniker OBJREF e quindi chiama IMoniker::GetDisplayName e infine rilascia il moniker. Il nome visualizzato per un moniker OBJREF è del modulo:

OBJREF:nnnnnnnnnn

Dove nnnnnnnn è una codifica base 64 lunga arbitrariamente lunga che incapsula il percorso del computer, l'endpoint di elaborazione e l'ID del puntatore dell'interfaccia (IPID) dell'oggetto in esecuzione

Il nome visualizzato può quindi essere trasferito al client come testo. Ad esempio, il nome visualizzato può risiedere in una pagina HTML che il client scarica.

Il client può passare il nome visualizzato a MkParseDisplayName, che crea un moniker OBJREF in base al nome visualizzato. Una chiamata al metodo IMoniker::BindToObject ottiene un puntatore con marshalling all'istanza in esecuzione nel server.

Ad esempio, un componente COM lato server contenuto in una pagina di Active Server può creare un moniker OBJREF, ottenere il nome visualizzato e scrivere il nome visualizzato nell'output HTML inviato al browser client. Uno script eseguito sul lato client può usare il nome visualizzato per ottenere l'accesso all'oggetto in esecuzione stesso. Uno script Visual Basic lato client, ad esempio, potrebbe archiviare il nome visualizzato in una variabile denominata strMyName e includere questa riga:

objMyInstance = GetObject(strMyName)

Il motore di script effettua internamente le chiamate a MkParseDisplayName e IMoniker::BindToObject e lo script può quindi usare objMyInstance per fare riferimento direttamente all'oggetto in esecuzione.

Requisiti

   
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