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