Plugin proxy
Latest version: 5.0.1 build 1126. November 28, 2025.
The Plugin proxy module bridges the host program and modules implemented in other languages by loading a user DLL and calling its API functions. It provides a richer API surface than the Python plugin interface and supports module types such as data parser, data filter, data export, events handling, and data query. The module supplies an example Visual C++ 2015 DLL implementing parser, filter, and export functions. Use that example as a starting point and keep thread safety, exception handling, and modular configuration in mind.
Design and lifecycle
A typical DLL implements lifecycle functions the host calls in sequence:
- aggPluginCreate
- aggPluginLoad
- aggPluginProcessData
- aggPluginGetData
- aggPluginSaveSettingsNow
- aggPluginLoadSettingsNow
- aggPluginShowOptionsDialog
- aggPluginEvent
- aggPluginExecuteCustomCommand
- aggPluginStateChanged
- aggPluginUnload
- aggPluginDestroy
The DLL must be placed next to pluginproxy.dll in the program folder\plugins\pluginproxy. The host may call API functions from different threads, so all code that touches shared data must be thread safe. Also prevent exceptions from propagating outside the DLL by using try-catch around public API function bodies.
Practical coding checklist
- Wrap every exported function in try-catch and return mrtException on unhandled errors.
- Make all shared data access thread-safe using atomic primitives.
- Use the Visual C++ 2015 example as a template for your start.
- Always Shift() the buffer after consuming bytes; avoid infinite retention that causes buffer overflow.
- Validate pCallRec context: inspect dwClientID, dwDataSource, and aCallModuleType to handle multi-instance scenarios.
Key features
- Multilanguage adapter: load DLLs written in C++ and other languages that expose the C ABI.
- Full module lifecycle: supports creation, load, save, show options, event handling, and destruction callbacks.
- 65 KB FIFO buffer: built in buffer with search and shift primitives for parsing of incoming data.
- Per instance storage: PluginStorageAdd/Get/Del for persistent per instance state between calls.
- Parser variables API: GetParserItems returns structured parser variable definitions.
- SendData and events: send replies to data sources and generate program internal events.
Summary
Plugin proxy enables loading custom DLLs to implement parsers, filters, exporters, and event handlers with a full lifecycle API, a 65 KB per client buffer, and per plugin instance storage. Use the provided Visual C++ example as a starting point.
How to enable this plugin
The figure below shows how to select the plugin on the "Modules" page.

Fig.1. Selecting the plugin.