INVOICES programs usually use DLL extensions internally, so normally you do not need to use this feature.
When a DLL extension is loaded, then the C function specified in the DLLEntryPoint setting in Eilocal.ini is called.
The C function must have the signature shown below. The function must return non-zero if successful, or 0 if there was an error.
#pragma pack(8)
typedef struct
{
DWORD dwStructSize; // Size, in bytes, of the structure
DWORD dwEHVersion; // INVOICES application version
DWORD dwEHFamily; // Product family, from the EEH_AppFamily enum
DWORD dwEHApplicationID; // Application identifier, from the EEH_AppID enum, or product family specific
void *pApplicationObject; // Pointer to INVOICES C++ application object
LPWSTR szIniFile; // Name of Eilocal.ini file, in UNICODE
LPWSTR szIniSection; // Name of section in Eilocal.ini file, in UNICODE
DWORD dwPluginInfo; // INVOICES plugin-specific information
void *pPluginData; // Pointer to INVOICES plugin-specific information
} EHC_DLLPluginEnv_t;
extern "C" DWORD EHPluginEntry( EHC_DLLPluginEnv_t *pEnvironment );