Приложения
Приложение А. Функции, константы и структуры RDS
А.3. События модуля автокомпиляции и связанные с ними структуры
А.3.2. RDS_COMPMODULEDATA – структура данных модуля
Структура данных модуля автокомпиляции RDS_COMPMODULEDATA содержит основные параметры этого модуля, которые нужны его функции для реакции на различные события. Эта структура создается RDS перед первым вызовом функции модуля автокомпиляции и хранится в памяти все время его существования, то есть до тех пор, пока последняя модель, обслуживаемая этим модулем, не будет отключена от последнего связанного с ней блока схемы. Общая структура данных, используемых для автоматической компиляции моделей, подробно рассмотрена в главе 3 руководства программиста.
typedef struct { RDS_COMPHANDLE Module; // Идентификатор модуля LPVOID ModuleData; // Адрес личной области данных модуля RDSCSTR DllFullPathA; // Полный путь к DLL модуля (UTF8) RDSWCSTR DllFullPathW; // Полный путь к DLL модуля (UTF16) //RDSXCSTR DllFullPath; // Полный путь к DLL модуля (поле-псевдоним) RDSCSTR DllFuncNameA; // Имя функции DLL модуля (UTF8) RDSWCSTR DllFuncNameW; // Имя функции DLL модуля (UTF16) //RDSXCSTR DllFuncName; // Имя функции DLL модуля (поле-псевдоним) RDSINT32 NModels; // Число моделей, связанных в данный // момент с этим модулем RDSCSTR DataFileA; // Предлагаемое имя файла настроек (UTF8) RDSWCSTR DataFileW; // Предлагаемое имя файла настроек (UTF16) //RDSXCSTR DataFile; // Предлагаемое имя файла настроек (поле-псевдоним) RDSCSTR ModelFormatA; // Уникальный идентификатор формата модели (UTF8) RDSWCSTR ModelFormatW; // Уникальный идентификатор формата модели (UTF16) //RDSXCSTR ModelFormat; // Уникальный идентификатор формата модели (поле-псевдоним) } RDS_COMPMODULEDATA; typedef RDS_COMPMODULEDATA *RDS_PCOMPMODULEDATA;
Поля структуры
- Module (RDS_COMPHANDLE)
- Уникальный идентификатор данного модуля. Тип RDS_COMPHANDLE используется в RDS для указания на конкретный модуль автокомпиляции.
- ModuleData (LPVOID)
- Указатель на личную область данных модуля. Перед самым первым вызовом функции данного модуля RDS записывает в это поле значение NULL и больше к нему не обращается. Если модулю требуется отводить память под свои нужды, он может записать указатель на отведенную область памяти в это поле. В этом случае освободить отведенную область тоже должна будет функция модуля – обычно это делается в реакции на событие RDS_COMPM_CLEANUP.
- DllFullPathA (RDSCSTR), DllFullPathW (RDSWCSTR), DllFullPath (RDSXCSTR)
- Полный путь к DLL, в которой находится функция данного модуля автокомпиляции. Может использоваться для считывания каких-либо параметров, хранящихся в файлах в одной папке с DLL модуля. Функция модуля не должна изменять эту строку.
- DllFuncNameA (RDSCSTR), DllFuncNameW (RDSWCSTR), DllFuncName (RDSXCSTR)
- Экспортированное имя функции данного модуля автокомпиляции. Функция модуля не должна изменять эту строку.
- NModels (RDSINT32)
- Общее число моделей, подключенных в данный момент к этому модулю автокомпиляции. Вместе с сервисной функцией rdscompGetModelData может использоваться для организации цикла по всем моделям, обслуживаемым данным модулем. Функция модуля не должна изменять это число.
- DataFileA (RDSCSTR), DataFileW (RDSWCSTR), DataFile (RDSXCSTR)
- Автоматически сформированное RDS имя файла для хранения настроек модуля. Это имя гарантированно не будет совпадать с другими используемыми RDS именами файлов.
- ModelFormatA (RDSCSTR), ModelFormatW (RDSWCSTR), ModelFormat (RDSXCSTR)
- Уникальная строка, описывающая формат текста моделей, поддерживаемых модулем. Эта строка считывается из файла описания модуля, с помощью которого модуль регистрируется в RDS.
См. также