CreateObjrefMoniker-Funktion (objbase.h)
Erstellt einen OBJREF-Moniker basierend auf einem Zeiger auf ein -Objekt.
Syntax
HRESULT CreateObjrefMoniker(
[in, optional] LPUNKNOWN punk,
[out] LPMONIKER *ppmk
);
Parameter
[in, optional] punk
Ein Zeiger auf die IUnknown-Schnittstelle für das Objekt, das der Moniker darstellen soll.
[out] ppmk
Adresse eines Zeigers auf die IMoniker-Schnittstelle auf dem erstellten OBJREF-Moniker.
Rückgabewert
Diese Funktion kann die Standardrückgabewerte E_OUTOFMEMORY, E_UNEXPECTED und S_OK zurückgeben.
Hinweise
Clients verwenden OBJREF-Moniker, um einen gemarshallten Zeiger auf ein ausgeführtes Objekt im Adressraum des Servers abzurufen.
Der Server ruft in der Regel CreateObjrefMoniker auf, um einen OBJREF-Moniker zu erstellen, ruft dann IMoniker::GetDisplayName auf und gibt schließlich den Moniker frei. Der Anzeigename für einen OBJREF-Moniker hat folgende Form:
OBJREF:nnnnnnnnn
Dabei ist nnnnnnn eine beliebig lange Base64-Codierung, die den Computerstandort, den Prozessendpunkt und die Schnittstellenzeiger-ID (IPID) des ausgeführten Objekts kapselt.
Der Anzeigename kann dann als Text an den Client übertragen werden. Der Anzeigename kann sich beispielsweise auf einer HTML-Seite befinden, die vom Client heruntergeladen wird.
Der Client kann den Anzeigenamen an MkParseDisplayName übergeben, wodurch basierend auf dem Anzeigenamen ein OBJREF-Moniker erstellt wird. Ein Aufruf der monikers IMoniker::BindToObject-Methode ruft dann einen gemarshallten Zeiger auf die ausgeführte instance auf dem Server ab.
Beispielsweise kann eine serverseitige COM-Komponente, die in einer aktiven Serverseite enthalten ist, einen OBJREF-Moniker erstellen, dessen Anzeigenamen abrufen und den Anzeigenamen in die HTML-Ausgabe schreiben, die an den Clientbrowser gesendet wird. Ein Skript, das auf clientseitiger Seite ausgeführt wird, kann den Anzeigenamen verwenden, um Zugriff auf das ausgeführte Objekt selbst zu erhalten. Ein clientseitiges Visual Basic-Skript für instance könnte den Anzeigenamen in einer Variablen namens strMyName speichern und diese Zeile enthalten:
objMyInstance = GetObject(strMyName)
Die Skript-Engine führt intern die Aufrufe von MkParseDisplayName und IMoniker::BindToObject durch, und das Skript kann dann objMyInstance verwenden, um direkt auf das ausgeführte Objekt zu verweisen.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 2000 Professional [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | objbase.h |
Bibliothek | Ole32.lib |
DLL | Ole32.dll |
APIs | ext-ms-win-com-ole32-l1-1-5 (eingeführt in Windows 10, Version 10.0.15063) |