Partager via


CreateObjrefMoniker, fonction (objbase.h)

Crée un moniker OBJREF basé sur un pointeur vers un objet.

Syntaxe

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

Paramètres

[in, optional] punk

Pointeur vers l’interface IUnknown sur l’objet que le moniker doit représenter.

[out] ppmk

Adresse d’un pointeur vers l’interface IMoniker sur le moniker OBJREF créé.

Valeur retournée

Cette fonction peut retourner les valeurs de retour standard E_OUTOFMEMORY, E_UNEXPECTED et S_OK.

Notes

Les clients utilisent des monikers OBJREF pour obtenir un pointeur marshalé vers un objet en cours d’exécution dans l’espace d’adressage des serveurs.

Le serveur appelle généralement CreateObjrefMoniker pour créer un moniker OBJREF, puis appelle IMoniker::GetDisplayName, puis libère le moniker. Le nom d’affichage d’un moniker OBJREF est de la forme suivante :

OBJREF:nnnnnnnnnn

nnnnnnnn est un encodage de base 64 arbitrairement long qui encapsule l’emplacement de l’ordinateur, le point de terminaison de processus et l’ID de pointeur d’interface (IPID) de l’objet en cours d’exécution

Le nom d’affichage peut ensuite être transféré vers le client sous forme de texte. Par exemple, le nom d’affichage peut résider sur une page HTML que le client télécharge.

Le client peut passer le nom d’affichage à MkParseDisplayName, ce qui crée un moniker OBJREF en fonction du nom d’affichage. Un appel à la méthode IMoniker::BindToObject monikers obtient ensuite un pointeur marshalé vers le instance en cours d’exécution sur le serveur.

Par exemple, un composant COM côté serveur contenu dans une page Active Server peut créer un moniker OBJREF, obtenir son nom d’affichage et écrire le nom d’affichage dans la sortie HTML envoyée au navigateur client. Un script qui s’exécute côté client peut utiliser le nom d’affichage pour accéder à l’objet en cours d’exécution lui-même. Un script Visual Basic côté client, pour instance, peut stocker le nom d’affichage dans une variable appelée strMyName et inclure cette ligne :

objMyInstance = GetObject(strMyName)

Le moteur de script effectue en interne les appels à MkParseDisplayName et IMoniker::BindToObject, et le script peut ensuite utiliser objMyInstance pour faire référence directement à l’objet en cours d’exécution.

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête objbase.h
Bibliothèque Ole32.lib
DLL Ole32.dll
Ensemble d’API ext-ms-win-com-ole32-l1-1-5 (introduit dans Windows 10, version 10.0.15063)

Voir aussi

IMoniker