実行状態への移行
埋め込みオブジェクトが実行状態に移行すると、サーバーのみが提供するサービスを利用するために、オブジェクト ハンドラーはサーバー アプリケーションを見つけて実行する必要があります。 埋め込みオブジェクトは、現在キャッシュされていない書式を描画する必要がある場合など、コンテナーからの要求によって明示的に、またはコンテナーのユーザーがオブジェクトをダブルクリックした場合など、何らかの操作の呼び出しに応じて OLE によって暗黙的に、実行状態に置かれます。
リンクされたオブジェクトが実行中の状態に遷移すると、そのプロセスはバインドと呼ばれます。 バインドのプロセスで、オブジェクト ハンドラーは、保存されているモニカーにリンクのデータを見つけるよう要求し、サーバー アプリケーションを実行します。
一見すると、リンクされたオブジェクトのバインドは、埋め込みオブジェクトの実行と同じように複雑に見えます。 ただし、次の点がプロセスを複雑にします。
- リンクは、別のコンテナーに埋め込まれたオブジェクトまたはその一部を参照できます。 この機能は、入れ子になった埋め込みの可能性を暗示します。 このような階層への参照を解決するには、右端のメンバーから始まる複合モニカーを再帰的に走査する必要があります。
- リンク ソースが実行されている場合、OLE は別のインスタンスを実行するのではなく、オブジェクトの実行中のインスタンスにバインドします。 入れ子になった埋め込みオブジェクト (その 1 つがリンク ソース) の場合、OLE は、いつでもすでに実行中のオブジェクトにバインドできる必要があります。
- オブジェクトを実行するには、オブジェクトの記憶域にアクセスする必要があります。 埋め込みオブジェクトが実行されると、OLE は読み込みプロセス中にストレージへのポインターを受け取り、それを OLE サーバー アプリケーションに渡します。 ただし、リンクされたオブジェクトの場合、ストレージにアクセスするための標準インターフェイスはありません。 OLE サーバー アプリケーションは、ファイル システム インターフェイスまたはその他のメカニズムを使用する場合があります。