Вход


Главная страница >> Учебный процесс >> Конспекты >> Delphi. Поддержка технологий COM >> COM-объекты и фабрика классов

[Назад]    [Содержание ]    [Вперед]

  


COM-объекты и фабрика классов


Классы TComObject и TComObjectFactory
Внутренний COM-сервер
Функция DllRedisterServer()
Функция DllUnregisterServer()
Функция DllGetClassObject()
Функция DllCanUnloadNow()
Создание экземпляра внутреннего COM-сервера
Внешний COM-сервер
Регистрация
Создание экземпляра внешнего COM-сервера
Агрегирование

Кроме поддержки одного или нескольких интерфейсов, которые наследуются от IUnknown, и выполнения подсчета ссылок для управления жизнедеятельностью, СОМ-объекты имеют еще одно специальное свойство: они создают специальные объекты, называемые фабрики классов (classfactories). Каждый СОМ-класс имеет ассоциированную фабрику классов, которая отвечает за создание экземпляра этого СОМ-класса. Фабрики классов ? это специальный СОМ-объект, который поддерживает интерфейс IClassFactory. Этот интерфейс определяется в модуле ActiveX следующим образом:

type
IClassFactory=interfасе(IUnknown)
═════['{00000001-0000-0000-COOO-000000000046}']
═════function CreateInstance(const unkOuter: lUnknown; const iid: TIID): HResult; stdcall;
═════function LockServer(fLock: BOOL): HResult; stdcall;
end;

Метод CreateInstance() вызывает экземпляр СОМ-объекта ассоциированной фабрики классов. Параметр unkOuter этого метода указывает на управляющий интерфейс IUnknown, если объект создается с помощью агрегирования (агрегирование будет разъяснено далее в этой главе). Параметр iid содержит идентификатор интерфейса, с помощью которого можно управлять объектом. Параметр obj должен содержать указатель на интерфейс, определенный параметром iid.

Метод LockServer() вызывается для хранения СОМ-сервера в памяти. Если параметр fLock равен True, счетчик ссылок сервера увеличивается. Если же параметр fLock равен False, счетчик ссылок сервера уменьшается. Если счетчик ссылок сервера становится равен 0, т.е. нет клиентов, использующих сервер, СОМ должна выгрузить сервер.



[Назад]    [Содержание ]    [Вперед]

  


  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017