Операционные системы. Учебное пособие. Марапулец Ю.В. - 213 стр.

UptoLike

Составители: 

OLE-приложения взаимодействуют друг с другом с помощью функций OLE-
библиотек. Например, если клиент хочет отредактировать изображение, он передает за-
прос библиотеке OleCli32.DLL. Та направляет его библиотеке OleSvr32.DLL. Последняя
находит сервер и передает ему команду начать сеанс редактирования. Когда пользова-
тель активизирует объект, библиотека OleSvr32 должна определить, какое приложение-
сервер соответствует указанному формату данных. Для поиска соответствующего серве-
ра OleSvr32 консультируется с библиотекой Shell32. Функции библиотеки Shell32
управляют системным реестром, в котором для каждого приложения записаны соответ-
ствующие форматы данных. При инициализации серверы вносят в системный реестр
свое имя и другую информацию.
После выполнения операции библиотека OleSvr32 передает результаты назад
библиотеке OleCli32, а та возвращает их клиенту. Схема взаимодействия клиента и сер-
вера с помощью OLE-библиотек изображена на рис.8.5 [12].
Рис.8.5. Взаимодействие клиента и сервера с помощью трех OLE-библиотек
Подобно DDEML, OLE-библиотеки используют в своей работе протокол DDE.
OLE-команды посылают DDE-сообщения. Базовые DDE-процессы выполняются неза-
метно для OLE-приложения. Поскольку Microsoft разрабатывала технологии DDEML и
OLE параллельно, они не опираются друг на друга.
Как уже упоминалось выше, при инсталляции или при первом запуске OLE-сервер
регистрируется в системном реестре. Среди прочего регистрируются имя и местополо-
жение сервера, а также типы предоставляемых им услуг.
В свою очередь, OLE-клиент может найти в реестре необходимый ему сервер и ус-
лугу. Непосредственный доступ к реестру обеспечивается с помощью редактора реестра
(файл RegEdit.EXE или RegEdit32.EXE в папке \WINDOWS или \WINDOWS\SYSTEM).
В качестве примера на рис.8.6 показано окно редактора реестра после выполнения
функции Find из меню Edit для нахождения информации о приложении Excel. В реестре
имеется несколько записей для Excel, но одна их них представляет для нас особый инте-
рес. Это идентификатор класса. Он находится в разделе HKEY_CLASSES_ROOT\CLSID
и выглядит следующим образом: 00020810-0000-0000-С0000-000000000046. Как и для
большинства остальных записей, эту информацию можно также найти в разделе
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID и в некоторых других разделах.
Как видно на рис.8.6, в реестр помещена информация о формате данных, опциях преоб-
разования, стандартном расширении и значке, программном идентификаторе, а также об
OLE-командах, которые поддерживаются соответствующим OLE-сервером.
215
      OLE-приложения взаимодействуют друг с другом с помощью функций OLE-
библиотек. Например, если клиент хочет отредактировать изображение, он передает за-
прос библиотеке OleCli32.DLL. Та направляет его библиотеке OleSvr32.DLL. Последняя
находит сервер и передает ему команду начать сеанс редактирования. Когда пользова-
тель активизирует объект, библиотека OleSvr32 должна определить, какое приложение-
сервер соответствует указанному формату данных. Для поиска соответствующего серве-
ра OleSvr32 консультируется с библиотекой Shell32. Функции библиотеки Shell32
управляют системным реестром, в котором для каждого приложения записаны соответ-
ствующие форматы данных. При инициализации серверы вносят в системный реестр
свое имя и другую информацию.
       После выполнения операции библиотека OleSvr32 передает результаты назад
библиотеке OleCli32, а та возвращает их клиенту. Схема взаимодействия клиента и сер-
вера с помощью OLE-библиотек изображена на рис.8.5 [12].




           Рис.8.5. Взаимодействие клиента и сервера с помощью трех OLE-библиотек

      Подобно DDEML, OLE-библиотеки используют в своей работе протокол DDE.
OLE-команды посылают DDE-сообщения. Базовые DDE-процессы выполняются неза-
метно для OLE-приложения. Поскольку Microsoft разрабатывала технологии DDEML и
OLE параллельно, они не опираются друг на друга.
      Как уже упоминалось выше, при инсталляции или при первом запуске OLE-сервер
регистрируется в системном реестре. Среди прочего регистрируются имя и местополо-
жение сервера, а также типы предоставляемых им услуг.
      В свою очередь, OLE-клиент может найти в реестре необходимый ему сервер и ус-
лугу. Непосредственный доступ к реестру обеспечивается с помощью редактора реестра
(файл RegEdit.EXE или RegEdit32.EXE в папке \WINDOWS или \WINDOWS\SYSTEM).
      В качестве примера на рис.8.6 показано окно редактора реестра после выполнения
функции Find из меню Edit для нахождения информации о приложении Excel. В реестре
имеется несколько записей для Excel, но одна их них представляет для нас особый инте-
рес. Это идентификатор класса. Он находится в разделе HKEY_CLASSES_ROOT\CLSID
и выглядит следующим образом: 00020810-0000-0000-С0000-000000000046. Как и для
большинства остальных записей, эту информацию можно также найти в разделе
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID и в некоторых других разделах.
Как видно на рис.8.6, в реестр помещена информация о формате данных, опциях преоб-
разования, стандартном расширении и значке, программном идентификаторе, а также об
OLE-командах, которые поддерживаются соответствующим OLE-сервером.


                                            215