Содержание материала

Ядро

 

Прежде всего следует подумать об инкапсуляции функций подключённого плагина в класс. Этот класс реализован в Modules.pas. При создании экземпляра класса происходит поиск и запоминание всех адресов функций плагина. Последующие вызовы функций происходят в о дноимённых методах класса в том случае, если они не равны. Я приведу только описание типа класса:

 

Code:

type

// описания типов функций модуля

TGetModuleInfo=function:TModuleInfo;stdcall;

TInitialize=procedure;stdcall;

TRun=procedure;stdcall;

TTerminate=procedure;stdcall;

TSetData=procedure(Kind:TDataKind;const Buffer;Size:Integer);stdcall;

 

// непосресдвенно сам класс

TModule=class

private

   FFileName:String//имя файла

   FHandle:THandle;   // дескриптор библиотеки

   FModuleInfo:TModuleInfo;  // информация о модуле

   // адреса функций плагина

   FGetModuleInfo:TGetModuleInfo; // функция получения информации о модуле

   FInitialize:TInitialize;  // процедура инициализации

   FRun:TRun;  // процедура запуска

   FTerminate:TTerminate;  // процедура останова

   FSetData:TSetData;  // процедура передачи данных

public

   constructor Create(AFileName:String;var IsValidModule:Boolean);

   destructor Destroy;override;

   // вызов функций плагина

   function GetModuleInfo:TModuleInfo;

   procedure Initialize;

   procedure Run;

   procedure Terminate;

   procedure SetData(Kind:TDataKind;const Buffer;Size:Integer);

   // свойства плагина

   property FileName:String read FFileName;

   property Handle:THandle read FHandle;

   property ModuleInfo:TModuleInfo read FModuleInfo;

end;

  

Как видно из текста, это простая надстройка над плагином, не добавляющая функциональности, но позволяющая хранить всё в одном объекте.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить