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

Описания RDS

Приложения

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

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

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

А.2.4.2. RDS_BFM_CHECKFUNCSUPPORT – проверка поддержки блоком функции с заданным идентификатором

# Приложения

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

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

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

##### А.2.4.2. RDS_BFM_CHECKFUNCSUPPORT – проверка поддержки блоком функции с заданным идентификатором

Поток, в котором вызывается функция модели

Главный поток RDS или поток расчета (тот же поток, в котором вызвана сервисная функция, запросившая проверку поддержки функции).

Первый параметр функции модели (int CallMode)

Константа RDS_BFM_CHECKFUNCSUPPORT.

Третий параметр функции модели (void *ExtParam)

Указатель на целый идентификатор функции (int*).

Возвращаемое функцией модели значение

RDS_BFR_DONE или 0 | Функция не поддерживается блоком, вызывать ее нельзя.
Любое ненулевое значение | Функция поддерживается блоком.

Примечания

Это устаревшее событие в настоящее время практически не используется. При вызове одним блоком функции другого блока (см. §2.13) вызвавший блок может передать в сервисную функцию флаг RDS_BCALL_CHECKSUPPORT, потребовав тем самым от RDS выполнения проверки поддержки данной функции вызванным блоком. Функция модели должна вернуть ненулевое значение, если функция блока с данным идентификатором поддерживается. Если будет возвращено нулевое значение, вызов функции блока не будет произведен.

Крайне желательно писать реакции на вызов функции блока (событие RDS_BFM_FUNCTIONCALL) таким образом, чтобы при вызове функции, которую модель блока не поддерживает, не выполнялось никаких действий. В этом случае необходимость в предварительной проверке поддержки функции отпадает.

Пример

Информирование RDS о поддержке вызова функции с именем «MyFunctionName» в модели блока.

      // Глобальная переменная для идентификатора функции
      int MyFuncId;
        ...
      // Регистрация функции блока (например, в главной функции DLL)
      MyFuncId=rdsRegisterFunction("MyFunctionName");
        ...
      // Реакция на событие в функции модели блока
      switch(CallMode)
        { case RDS_BFM_CHECKFUNCSUPPORT:
            if(*((int*)ExtParam)==MyFuncId)
              return 1; // Функция поддерживается
            return 0; // Остальные не поддерживаются
        ...

См. также

RDS_BFM_FUNCTIONCALL, rdsCheckBlockFunctionSupport, rdsCallBlockFunction, rdsQueueCallBlockFunction, rdsBroadcastFunctionCallsEx.