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

Описания RDS

Приложения

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

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

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

А.5.13.4. rdsBroadcastFuncCallsDelayed – отложенный вызов функции всех блоков подсистемы

# Приложения

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

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

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

##### А.5.13.4. rdsBroadcastFuncCallsDelayed – отложенный вызов функции всех блоков подсистемы

Функция rdsBroadcastFuncCallsDelayed ставит указанную функцию в очередь на выполнение для всех блоков указанной подсистемы. После этого управление немедленно возвращается модели вызвавшего блока, а модели блоков указанной подсистемы будут вызваны только после завершения этой модели.

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

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

RDS_VBhIpVDwDw

Параметры

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

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

Примечания

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

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

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

Отложенный вызов функций блоков рассматривается в §2.13.5 руководства программиста.

См. также

RDS_BFM_FUNCTIONCALL, RDS_FUNCTIONCALLDATA, rdsBroadcastFunctionCallsEx, rdsQueueCallBlockFunction, rdsRegisterFunction.