Модуль Ваше расширение на языке программирования С++ для программ-логгеров
Последняя версия: 5.0.1 build 1126. November 28, 2025.
Модуль Plugin proxy служит мостом между основной программой и модулями, реализованными на других языках программирования, загружая пользовательскую DLL и вызывая ее API-функции. Он предоставляет более широкий набор API, чем интерфейс Python-плагина, и поддерживает типы модулей, такие как парсер данных, фильтр данных, экспорт данных, обработка событий и запрос данных. В комплекте поставляется пример DLL на Visual C++ 2015, реализующий функции парсера, фильтра и экспорта. Используйте этот пример для старта и учитывайте потокобезопасность, обработку исключений и модульную конфигурацию в вашей разработке.
Конструкция и жизненный цикл
Типичная DLL реализует функции жизненного цикла, которые основная программа вызывает последовательно:
- aggPluginCreate
- aggPluginLoad
- aggPluginProcessData
- aggPluginGetData
- aggPluginSaveSettingsNow
- aggPluginLoadSettingsNow
- aggPluginShowOptionsDialog
- aggPluginEvent
- aggPluginExecuteCustomCommand
- aggPluginStateChanged
- aggPluginUnload
- aggPluginDestroy
DLL должна располагаться рядом с pluginproxy.dll в папке программы\plugins\pluginproxy. Хост может вызывать API-функции из разных потоков, поэтому весь код, работающий с общими данными, должен быть потокобезопасным. Также избегайте передачи исключений за пределы DLL, используя конструкции try-catch вокруг тел публичных API-функций.
Практический чеклист по разработке
- Оберните каждую экспортируемую функцию в try-catch и возвращайте mrtException при необработанных ошибках.
- Сделайте весь доступ к общим данным потокобезопасным, используя примитивы или блокировки.
- Используйте пример на Visual C++ 2015 как шаблон.
- Всегда вызывайте Shift() для буфера после извлечения из него байт; избегайте бесконечного накопления, которое может привести к переполнению буфера.
- Проверяйте контекст pCallRec: анализируйте dwClientID, dwDataSource и aCallModuleType для обработки сценариев с несколькими экземплярами.
Ключевые возможности
- Поддержка разных языков программирования: загрузка DLL, написанных на C++ и других языках, которые экспортируют C ABI.
- Полный жизненный цикл модуля: поддержка создания, загрузки, сохранения, отображения параметров, обработки событий и обратных вызовов при завершении работы.
- 65 KB FIFO буфер: встроенный буфер с базовыми функциями поиска байт и сдвига для парсинга входящих данных.
- Хранилище данных плагина: PluginStorageAdd/Get/Del для сохранения состояния конкретного экземпляра плагина между вызовами.
- API переменных парсера: GetParserItems возвращает структурированные определения переменных парсера.
- SendData: отправка ответов в источники данных и генерация внутренних событий программы.
Резюме
Plugin proxy позволяет загружать пользовательские DLL для реализации парсеров, фильтров, экспортеров и обработчиков событий с полным API жизненного цикла. Используйте предоставленный пример на Visual C++ как отправную точку.
Как включить модуль
На рисунке ниже вы можете увидеть, как включить данных модуль в настройках программы на странице "Модули".

Рис.1. Выбор модуля.