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

Описания RDS

Приложения

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

А.5. Сервисные функции и макросы RDS

А.5.13. Вызов функций блоков

А.5.13.6. rdsBroadcastFunctionCallsEx – прямой вызов функции всех блоков подсистемы

# Приложения

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

### А.5. Сервисные функции и макросы RDS

#### А.5.13. Вызов функций блоков

##### А.5.13.6. rdsBroadcastFunctionCallsEx – прямой вызов функции всех блоков подсистемы

Функция rdsBroadcastFunctionCallsEx вызывает одну и ту же функцию у всех блоков указанной подсистемы (с блоками вложенных подсистем или без них). Управление возвращается модели вызвавшего блока только после вызова всех функций.

      int RDSCALL rdsBroadcastFunctionCallsEx(
        RDS_BHANDLE Parent,    // Подсистема с вызываемыми блоками
        int FuncId,            // Идентификатор функции
        LPVOID pParams,        // Указатель на область параметров функции
        DWORD Flags            // Флаги (RDS_BCALL_*)
      );

Тип указателя на эту функцию

RDS_IBhIpVDw

Параметры

Parent(RDS_BHANDLE)
  Идентификатор подсистемы, у блоков которой будет вызываться функция (модели этих блоков будут реагировать на событие RDS_BFM_FUNCTIONCALL).
FuncId(int)
  Целый идентификатор вызываемой функции, полученный при ее регистрации вызовом rdsRegisterFunction.
pParams(LPVOID)
  Указатель на область параметров функции (этот указатель передается модели вызванного блока). Может равняться NULL.
Flags(DWORD)
  Один или несколько объединенных битовым ИЛИ флагов, управляющих вызовом функции:

  RDS_BCALL_ALLOWSTOP | Разрешить вызываемым моделям блоков прекращать дальнейшие вызовы присвоением значения TRUE полю Stop структуры RDS_FUNCTIONCALLDATA.
  RDS_BCALL_CHECKSUPPORT | Перед вызовом проверить поддержку этой функции блоком, вызвав его модель для реакции на событие RDS_BFM_CHECKFUNCSUPPORT. В настоящее время этот режим практически не используется.
  RDS_BCALL_SUBSYSTEMS | Вызывать функции у всех блоков внутри подсистемы Parent на всех уровнях иерархии (то есть не только у блоков и подсистем, непосредственно находящихся в Parent, но и у всех внутренних блоков этих подсистем).

Возвращаемое значение

Общее число блоков, модели которых были вызваны в процессе выполнения функции.

Примечания

Вызов этой функции приводит к последовательному (в произвольном порядке) вызову всех моделей блоков в подсистеме Parent для реакции на событие RDS_BFM_FUNCTIONCALL. Поля структуры данных функции RDS_FUNCTIONCALLDATA, указатель на которую передается в модель блока в параметре ExtParam, при этом будут заполнены следующим образом:

Поле | Значение
--- | ---
int Function | значение параметра FuncId
LPVOID Data | значение параметра pParams
RDS_BHANDLE Caller | идентификатор блока, из модели которого вызвана rdsBroadcastFunctionCalls
BOOL Broadcast | TRUE
int BroadcastCnt | исходно – 0, увеличивается на 1 при вызове каждого следующего блока
BOOL Stop | исходно – FALSE, вызванная модель может присвоить TRUE, что прекратит вызов других моделей (при указании флага RDS_BCALL_ALLOWSTOP)
BOOL Delayed | FALSE
DWORD DataBufSize | 0

Модели блоков, находящихся в Parent, будут вызываться до тех пор, пока не будут вызваны все, или пока какая-либо модель не присвоит полю Stop структуры RDS_FUNCTIONCALLDATA значение TRUE.

Пример

Пример использования функции rdsBroadcastFunctionCallsEx приведен в §2.13.3 руководства программиста.

См. также

RDS_BFM_FUNCTIONCALL, RDS_FUNCTIONCALLDATA, rdsBroadcastFuncCallsDelayed, rdsRegisterFunction.