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

Приложения

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

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

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

А.5.13.8. rdsCallBlockFunctionDelayed – отложенный вызов функции блока (устаревшая)

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

  void  rdsCallBlockFunctionDelayed(
     Block,    // Вызываемый блок
    int FuncId,           // Идентификатор функции
     pParamBuf,     // Указатель на область параметров функции
     ParamBufSize    // Размер области параметров
  );

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

RDS_VBhIpVDw

Параметры

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

Примечания

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

Поле Значение
int Function значение параметра FuncId
Data указатель на внутреннюю область памяти RDS размером в ParamBufSize байтов, в которую скопирована область pParamBuf
Caller идентификатор блока, из модели которого вызвана rdsCallBlockFunctionDelayed
Broadcast FALSE
int BroadcastCnt 0
Stop FALSE
Delayed TRUE
DataBufSize значение параметра ParamBufSize

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

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

См. также

RDS_BFM_FUNCTIONCALL, RDS_FUNCTIONCALLDATA, rdsQueueCallBlockFunction, rdsCallBlockFunction, rdsBroadcastFunctionCallsEx, rdsRegisterFunction.


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