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

UptoLike

40
D1:Integer;
D2:Word;
D3:Word;
D4:Array[0. . 7] of Byte
Описание составного объекта, имеющего интерфейс INewInterfase,
Должно включать перечень всех методов интерфейсов IUnknown и
INewInterfase с описателем override(переопределяет). Это описание
должно включаться в модуль сервера слелующим образом:
Unit SerNewInterfase;
interfase
uses Windows, Ole2, SysUtils;
const
Class_NewIntfComponentObject: TCLSID=
(D1:$ABCDEF01; D2:$1234; D3:$5678;
D4:$AB, $CD, $EF, $FF, $12, $34, $56, $78));
type
TNewIntfComponentObject=class(NewInterfase)
private
FRefCount:Longint; //-счетчик ссылок, идентифицируемый
нулем;
………. . /’;[p-0
public
constructor Create;
destructor Destroy; override;
function QueryInterfase(const IID:TGUID;var Obj):
HResult; override;
function AddRef: Longint; override;
function Release : Longint; override;
end;
var
Global_Object_Count:Logint; //-глобальный счетчик
ссылок;
imlementation
…………
function TNewIntfComponentObject(const IID:TGUID;var Obj):
HResult; stdcall;
begin
Pointer(Obj):=Nil;
Result:= E_NOINTERFASE;//-по умолчанию интерфейс не
//поддерживается
if IsEqual CLSID(IID, IID_IUnknown) or
IsEqual CLSID(IID, IID_Imalloc) then
                       D1:Integer;
                       D2:Word;
                       D3:Word;
                       D4:Array[0. . 7] of Byte
 Описание составного объекта, имеющего интерфейс INewInterfase,
Должно включать перечень всех методов интерфейсов IUnknown и
INewInterfase с описателем override(переопределяет). Это описание
должно включаться в модуль сервера слелующим образом:
        Unit SerNewInterfase;
         interfase
         uses Windows, Ole2, SysUtils;
        const
          Class_NewIntfComponentObject: TCLSID=
              (D1:$ABCDEF01; D2:$1234; D3:$5678;
               D4:$AB, $CD, $EF, $FF, $12, $34, $56, $78));
       type
         TNewIntfComponentObject=class(NewInterfase)
       private
         FRefCount:Longint; //-счетчик ссылок, идентифицируемый
нулем;
     ………. . /’;[p-0
public
    constructor Create;
    destructor Destroy; override;
    function QueryInterfase(const IID:TGUID;var Obj):
               HResult; override;
     function AddRef: Longint; override;
     function Release : Longint; override;
end;
var
  Global_Object_Count:Logint; //-глобальный счетчик ссылок;
imlementation
…………
function TNewIntfComponentObject(const IID:TGUID;var Obj):
                                    HResult; stdcall;
begin
  Pointer(Obj):=Nil;
  Result:= E_NOINTERFASE;//-по умолчанию интерфейс не
                              //поддерживается
if IsEqual CLSID(IID, IID_IUnknown) or
      IsEqual CLSID(IID, IID_Imalloc) then
                               40