Eingeben des Ausführungszustands

Wenn ein eingebettetes Objekt den Übergang in den Ausführungszustand vornimmt, muss der Objekthandler die Serveranwendung suchen und ausführen, um die Dienste nutzen zu können, die nur der Server bereitstellt. Eingebettete Objekte werden entweder explizit durch eine Anforderung des Containers in den Zustand "Ausführung" versetzt, z. B. durch die Notwendigkeit, ein Format zu zeichnen, das derzeit nicht zwischengespeichert wird, oder implizit von OLE als Reaktion auf den Aufruf eines Vorgangs, z. B. wenn ein Benutzer des Containers auf das Objekt doppelklicken.

Wenn ein verknüpftes Objekt den Übergang in den Ausgeführten Zustand vornimmt, wird der Prozess als Bindung bezeichnet. Im Prozess der Bindung fordert der Objekthandler seinen gespeicherten Moniker auf, die Daten des Links zu suchen, und führt dann die Serveranwendung aus.

Auf den ersten Blick erscheint das Binden eines verknüpften Objekts nicht komplizierter als das Ausführen eines eingebetteten Objekts. Die folgenden Punkte erschweren den Prozess jedoch:

  • Ein Link kann auf ein Objekt oder einen Teil davon verweisen, der in einen anderen Container eingebettet ist. Diese Funktion impliziert ein Potenzial für geschachtelte Einbettungen. Um Verweise auf eine solche Hierarchie aufzulösen, muss ein zusammengesetzter Moniker rekursiv durchlaufen werden, beginnend mit dem äußerst rechten Element.
  • Wenn die Linkquelle ausgeführt wird, bindet OLE an die ausgeführte instance des Objekts, anstatt eine andere instance auszuführen. Bei geschachtelten eingebetteten Objekten, von denen eines die Linkquelle ist, muss OLE jederzeit an ein bereits ausgeführtes Objekt binden können.
  • Zum Ausführen eines Objekts muss auf den Speicherbereich für das Objekt zugegriffen werden. Wenn ein eingebettetes Objekt ausgeführt wird, empfängt OLE während des Ladevorgangs einen Zeiger auf den Speicher, den er an die OLE-Serveranwendung weitergibt. Für verknüpfte Objekte gibt es jedoch keine Standardschnittstelle für den Speicherzugriff. Die OLE-Serveranwendung kann die Dateisystemschnittstelle oder einen anderen Mechanismus verwenden.