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