Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.16. Работа с динамическими переменными
А.5.16.5. rdsEnumDynVarSubscribers – перебрать всех подписчиков переменной
Функция rdsEnumDynVarSubscribers вызывает пользовательскую функцию, указатель на который передается в ее параметрах, для каждого блока, подписанного на указанную динамическую переменную.
RDS_BHANDLE RDSCALL rdsEnumDynVarSubscribers( RDS_PDYNVARLINK pLink, // Структура подписки RDS_BBhDvpV CallBack, // Функция пользователя LPVOID Data // Параметр функции пользователя );
Тип указателя на эту функцию
RDS_BhDvCb5pV
Параметры
- pLink (RDS_PDYNVARLINK)
- Указатель на структуру подписки на переменную RDS_DYNVARLINK, подписчиков которой нужно перебрать.
- vv (tt)
- Указатель на пользовательскую функцию, которую нужно вызвать для каждого блока, подписанного на
переменную из структуры pLink. Пользовательская функция должна иметь следующий вид:
BOOL RDSCALL имя_функции( RDS_BHANDLE block, RDS_PDYNVARLINK plink, LPVOID param)
В параметре block пользовательской функции передается идентификатор блока, для которого вызвана функция, в параметре plink – указатель на структуру подписки этого блока на данную переменную, в параметре param – параметр Data (см. ниже) без какой-либо обработки. Функция пользователя должна вернуть TRUE, если перебор блоков необходимо продолжить, и FALSE, если его нужно немедленно остановить. - Data (LPVOID)
- Параметр типа void*, передаваемый в пользовательскую функцию при вызове.
Возвращаемое значение
Идентификатор блока (RDS_BHANDLE), для которого функция пользователя вернула FALSE. Если функция пользователя всегда возвращала TRUE (перебраны все блоки, подписанные на переменную), вместо идентификатора блока возвращается NULL.
Примечания
Функция rdsEnumDynVarSubscribers обычно используется для выполнения каких-либо однотипных действий над всеми блоками, подписавшимися на динамическую переменную. Для уведомления подписчиков об изменении переменной используется другая функция – rdsNotifyDynVarSubscribers. Функция перебирает блоки в порядке, определяемом внутренней логикой RDS, программист никак не может изменить этот порядок.
Параметр Data, имеющий тип LPVOID (произвольный указатель), передается в вызываемую функцию пользователя без изменений. Это единственный способ передать ей какие-либо данные: например, можно передать указатель на какую-либо структуру, а внутри пользовательской функции привести его к нужному типу и обращаться к полям этой структуры.
Пример
Пример использования функции rdsEnumDynVarSubscribers приведен в §2.12.8 руководства программиста.
См. также