Текущий раздел:

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.2. События блока и связанные с ними описания

А.2.4. События общего назначения

А.2.4.3. RDS_BFM_CLEANUP – очистка данных блока

# Приложения

## Приложение А. Функции, константы и структуры 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;
      }

См. также

RDS_BFM_INIT.