Архитектура СОМ. Элементы реестра, относящиеся к СОМ

   
На этом шаге мы рассмотрим элементы реестра, которые используются при работе с COM-объектами.

   
Устанавливая СОМ-объект на компьютере, Вы обязаны зарегистрировать его в системном реестре.
На рисунке 1 показаны записи, создаваемые при такой регистрации.

   
Записи при регистрации размещаются в HKEY_CLASSES_ROOT в подразделе CLSID. Именно сюда
обращаются библиотеки при попытке найти и загрузить СОМ-объект. В разделе CLSID создается
подраздел с именем, являющимся строковой формой CLSID объекта, который также в свою очередь
должен содержать подраздел, предоставляющий сведения о сервере компонентов. Все это проиллюстрировано ниже:

  HKEY_CLASSES_ROOT\CLSID\{64CE33A0-6B03-11D3-9352-0080C7FA0C3E}\ 
  InprocServer32 = c:\Encoder\debug\Encoder.dll

   
Имя подраздела, InprocServer32, информирует, что серверный компонент - это библиотека DLL,
находящаяся на локальной машине.


Рис.1. Регистрация СОМ-объекта

   
На один уровень ниже HKEY_CLASSES_ROOT Вы можете поместить раздел со строковым именем своего
СОМ-объекта, которое не будет зависеть от версии программным идентификатором (ProgID).
Создайте в нем подраздел CLSID с параметром, содержащим значение GUID Вашего объекта в
строковом формате. Путь такой записи выглядит примерно так:

  HKEY_CLASSES_ROOT\Encoder\CLSID = {64CE33A0-6B03-11D3-9352-0080C7FA0C3E}

Средствами функции CLSIDFromProgID() клиентское приложение может извлечь CLSID из ProgID.
Предоставляя ProgID, Вы облегчаете "жизнь" разработчику клиентского приложения, создающему экземпляр
Вашего СОМ-объекта: избавляете его от необходимости вручную вводить в исходный текст CLSID -
а при этом избежать ошибки довольно трудно. В исходном тексте клиентского приложения на Visual Basic СОМ-объекты
всегда определяются по их ProgID, поэтому всегда регистрируйте ProgID, если планируете работу
Ваших объектов с другими клиентами (не на C++).

   
На следующем шаге мы рассмотрим создание объектов с помощью CoCreateInstance().



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий