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