Современные технологии разработки программного обеспечения. Сивохин А.В - 39 стр.

UptoLike

39
ЛАБОРАТОРНАЯ РАБОТА 8
СОЗДАНИЕ СЕРВЕРОВ СОСТАВНЫХ ОБЪЕКТОВ COM
Цель работы-овладения навыками программирования и
использования основных интерфейсов серверов составных объектов
COM в среде Delphi.
Базовым классом для всех интерфейсов COM-объектов является
интерфейс IUnknown, имеющий следующее описание в модуле
ActiveX среды программирования Delphi:
IUnknown =class
public
function QueryInterfase(const IID:TGID;var Obj):
HResult; virtual; stdcall; abstract;
function AddRef: Longint; virtual; stdcall; abstract;
function Release : Longint; virtual; stdcall; abstract;
end;
Поэтому описание нового интерфейса INewInterfase должно
выглядеть следующим образом:
INew Interfase=class(IUnknown)
public
Описание методов нового интерфейса
end;
В этом описании все новые методы должны быть чисто
виртуальными, т. е. иметь описатели virtual и abstract. Способ
передачи параметров обычно выбирается как stdcall.
Функция QueryInterfase использует глобальный идентификатор
интерфейса в качестве передаваемого параметра. Разрабатываемый
составной объект должен иметь глобально уникальный
идентификатор,
Который называется идентификатором класса CLSID. Типом
того и
другого идентификатора является запись следующего вида:
TCLSID=TGUID ;
TGUID=record
                  ЛАБОРАТОРНАЯ РАБОТА № 8


   СОЗДАНИЕ СЕРВЕРОВ СОСТАВНЫХ ОБЪЕКТОВ COM


Цель    работы-овладения    навыками    программирования     и
использования основных интерфейсов серверов составных объектов
COM в среде Delphi.
Базовым классом для всех интерфейсов COM-объектов является
интерфейс IUnknown, имеющий следующее описание в модуле
ActiveX среды программирования Delphi:
IUnknown =class
           public
             function QueryInterfase(const IID:TGID;var Obj):
                      HResult; virtual; stdcall; abstract;
            function AddRef: Longint; virtual; stdcall; abstract;
            function Release : Longint; virtual; stdcall; abstract;
         end;
Поэтому описание нового интерфейса INewInterfase                  должно
выглядеть следующим образом:
        INew Interfase=class(IUnknown)
              public
               Описание методов нового интерфейса
            end;
В этом описании все новые методы должны быть чисто
виртуальными, т. е. иметь описатели virtual и abstract. Способ
передачи параметров обычно выбирается как stdcall.
  Функция QueryInterfase использует глобальный идентификатор
интерфейса в качестве передаваемого параметра. Разрабатываемый
составной объект должен иметь глобально уникальный
идентификатор,
Который называется идентификатором класса CLSID. Типом того и
другого идентификатора является запись следующего вида:
         TCLSID=TGUID ;
         TGUID=record
                                  39