Приложения
Приложение А. Функции, константы и структуры RDS
А.2. События блока и связанные с ними описания
А.2.4. События общего назначения
А.2.4.3. RDS_BFM_CLEANUP – очистка данных блока
Поток, в котором вызывается функция модели
Главный поток RDS.
Первый параметр функции модели (int CallMode)
Константа RDS_BFM_CLEANUP.
Третий параметр функции модели (void *ExtParam)
Не используется (NULL).
Возвращаемое функцией модели значение
Не используется, можно возвращать любое значение.
Примечания
Событие RDS_BFM_CLEANUP – последнее событие перед отключением модели от блока из-за его удаления, выгрузки схемы из памяти, подключения к блоку новой модели и т.п. Если в реакции на событие RDS_BFM_INIT модель отвела память под личную область данных блока, в реакции на RDS_BFM_CLEANUP она должна освободить ее. События инициализации и очистки подробно рассмотрены в §2.4.
Пример
Отведение памяти под личную область данных блока оператором C++ new и ее освобождение оператором delete.
// Структура личной области данных блока typedef struct { int IntData; double DoubleData; } TMyBlockData; // Модель блока extern "C" __declspec(dllexport) int RDSCALL Model1( int CallMode, // Событие RDS_PBLOCKDATA BlockData, // Данные блока LPVOID ExtParam) // Дополнительные параметры { TMyBlockData *data; switch(CallMode) { case RDS_BFM_INIT: // Отведение памяти data=new TMyBlockData; BlockData->BlockData=data; data->IntData=0; data->DoubleData=1.0; break; case RDS_BFM_CLEANUP: // Освобождение памяти data=(TMyBlockData*)(BlockData->BlockData); delete data; break; } return RDS_BFR_DONE; }
См. также