Переход в рабочее состояние
Когда внедренный объект выполняет переход к работающему состоянию, обработчик объектов должен находить и запускать серверное приложение, чтобы использовать службы, предоставляемые только сервером. Внедренные объекты помещаются в состояние выполнения либо явным образом через запрос контейнера, например необходимость рисования формата, не кэшированного в данный момент, либо неявно OLE в ответ на вызов некоторых операций, например когда пользователь контейнера дважды щелкает объект.
При переходе связанного объекта в рабочее состояние процесс называется привязкой. В процессе привязки обработчик объекта запрашивает сохранённый моникер, чтобы определить данные ссылки, а затем запускает серверное приложение.
На первый взгляд привязка связанного объекта кажется не более сложной, чем запуск внедренного объекта. Однако следующие моменты усложняют процесс:
- Ссылка может ссылаться на объект или ее часть, внедренную в другой контейнер. Эта возможность подразумевает потенциал для вложенных встраиваний. Для разрешения ссылок на такую иерархию необходимо рекурсивно обходить составное имя, начиная с правого элемента.
- При запуске источника ссылки OLE привязывается к запущенному экземпляру объекта, а не к другому экземпляру. В случае вложенных внедренных объектов, один из которых является источником ссылки, OLE должен иметь возможность подключиться к уже запущенному объекту в любой момент.
- Для запуска объекта требуется доступ к области хранилища для объекта. При запуске внедренного объекта OLE получает указатель на хранилище во время загрузки, который передается в приложение сервера OLE. Однако для связанных объектов нет стандартного интерфейса для доступа к хранилищу. Приложение СЕРВЕРА OLE может использовать интерфейс файловой системы или другой механизм.