Навигация:
<< >> Оглавление Указатель

Приложения

Приложение А. Функции, константы и структуры 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=("MyFunctionName");
    ...
  // Реакция на событие в функции модели блока
  switch(CallMode)
    { case RDS_BFM_CHECKFUNCSUPPORT:
        if(*((int*)ExtParam)==MyFuncId)
          return 1; // Функция поддерживается
        return 0; // Остальные не поддерживаются
    ...

См. также

RDS_BFM_FUNCTIONCALL, rdsCheckBlockFunctionSupport, rdsCallBlockFunction, rdsQueueCallBlockFunction, rdsBroadcastFunctionCallsEx.


<< >> Оглавление Указатель