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) |