bg

Модуль Ваше расширение на языке программирования С++ для программ-логгеров

Последняя версия: 5.0.1 build 1126. November 28, 2025.

Модуль Plugin proxy служит мостом между основной программой и модулями, реализованными на других языках программирования, загружая пользовательскую DLL и вызывая ее API-функции. Он предоставляет более широкий набор API, чем интерфейс Python-плагина, и поддерживает типы модулей, такие как парсер данных, фильтр данных, экспорт данных, обработка событий и запрос данных. В комплекте поставляется пример DLL на Visual C++ 2015, реализующий функции парсера, фильтра и экспорта. Используйте этот пример для старта и учитывайте потокобезопасность, обработку исключений и модульную конфигурацию в вашей разработке.

Скачать  | PDF руководство

Конструкция и жизненный цикл

Типичная DLL реализует функции жизненного цикла, которые основная программа вызывает последовательно:

  1. aggPluginCreate
  2. aggPluginLoad
  3. aggPluginProcessData
  4. aggPluginGetData
  5. aggPluginSaveSettingsNow
  6. aggPluginLoadSettingsNow
  7. aggPluginShowOptionsDialog
  8. aggPluginEvent
  9. aggPluginExecuteCustomCommand
  10. aggPluginStateChanged
  11. aggPluginUnload
  12. 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++ как отправную точку.

Скачать  | PDF руководство

Как включить модуль

На рисунке ниже вы можете увидеть, как включить данных модуль в настройках программы на странице "Модули".

Выбор модуля

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

Другие похожие модули: