Если кратко:
Qip загружает dll с твоим плагином и найдя в ней функцию
CreateInfiumPLUGIN, вызывает ее
при этом он передает тебе интерфейс для связи с сервером -
PluginService: IQIPPluginService
а ты ему свой интерфейс - типа IQIPPlugin
для того чтобы работал твой интерфейс из двух функций предварительно создается объект класса
TQipPlugin.Create(PluginService)
сервер видит только твой интерфейс
PHP код:
IQIPPlugin = interface
// сервер получает информацию о плагине
function GetPluginInfo: pPluginInfo; stdcall;
// сервер вызывает чтобы сообщить плагину о событиях (плагин загружен, запуск плагина, останов и т.д.)
// смотри реализацию в классе TQipPlugin там все подробно расписано на чистом англицком
procedure OnQipMessage(var PlugMsg: TPluginMessage); stdcall;
end;
в своем плагине ты сам пишешь как ты будешь реагировать на событи
в общемто все кроме инициализации, описаний интерфейсов и констант можешь менять
когда ты хочешь чтото сообщить или получить от сервера то используешь его интерфейс
PHP код:
IQIPPluginService = interface
// позволяет тебе сохранить или загрузить сохраненные опции
function PluginOptions(DllHandle: LongInt): pPluginSpecific; stdcall;
// посылаешь серверу вообщение на которое он отреагирует
procedure OnPluginMessage(var PlugMsg: TPluginMessage); stdcall;
end;
который ты сохранил в
PHP код:
constructor TQipPlugin.Create(const PluginService: IQIPPluginService);
begin
FPluginSvc := PluginService;
end;
В общем гдето так
удачи