Zeigermoniker
Ein Zeigermoniker identifiziert ein Objekt, das nur im aktiven oder ausgeführten Zustand vorhanden sein kann. Dies unterscheidet sich von anderen Monikerklassen, die Objekte identifizieren, die entweder im passiven oder aktiven Zustand vorhanden sein können.
Angenommen, eine Anwendung verfügt über ein Objekt, das keine persistente Darstellung aufweist. Wenn ein Client Ihrer Anwendung Zugriff auf dieses Objekt benötigt, können Sie dem Client normalerweise einfach einen Zeiger auf das Objekt übergeben. Angenommen, Ihr Client erwartet einen Moniker. Das Objekt kann nicht mit einem Dateimoniker identifiziert werden, da es weder in einer Datei noch mit einem Elementmoniker gespeichert wird, da es nicht in einem anderen Objekt enthalten ist.
Stattdessen kann Ihre Anwendung einen Zeigermoniker erstellen, bei dem es sich um einen Moniker handelt, der einfach intern einen Zeiger enthält, und diesen an den Client übergeben. Der Client kann diesen Moniker wie jeder andere behandeln. Wenn der Client jedoch IMoniker::BindToObject für den Zeigermoniker aufruft, überprüft der Monikercode weder die laufende Objekttabelle (ROT) noch lädt er etwas aus dem Speicher. Stattdessen ruft der Monikercode einfach QueryInterface auf dem Zeiger auf, der im Moniker gespeichert ist.
Zeigermoniker ermöglichen es Objekten, die nur im aktiven oder ausgeführten Zustand vorhanden sind, an Monikervorgängen teilzunehmen und von Monikerclients verwendet zu werden. Ein wichtiger Unterschied zwischen Zeigermonikern und anderen Monikerklassen besteht darin, dass Zeigermoniker nicht im persistenten Speicher gespeichert werden können. Wenn Sie dies tun, gibt der Aufruf der IMoniker::Save-Methode einen Fehler zurück. Dies bedeutet, dass Zeigermoniker nur in speziellen Situationen nützlich sind. Sie können die CreatePointerMoniker-Funktion verwenden, wenn Sie einen Zeigermoniker verwenden müssen.
Zugehörige Themen