Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.10. Загрузка и сохранение данных блока
Описываются функции, используемые при загрузке и сохранении параметров и состояния блока (см. §2.8 руководства программиста).
А.5.10.1. rdsReadBlockData – считать данные блока в двоичном формате
Функция rdsReadBlockData считывает двоичные данные блока, ранее записанные функцией rdsWriteBlockData.
BOOL RDSCALL rdsReadBlockData( LPVOID Buffer, // Указатель на начало данных int Size // Размер данных );
Тип указателя на эту функцию
RDS_BpVI
Параметры
- Buffer (LPVOID)
- Указатель на начало области памяти, в которую нужно загрузить считанные данные.
- Size (int)
- Размер считываемых данных в байтах.
Возвращаемое значение
TRUE – данные считаны успешно, FALSE – ошибка чтения (осталось меньше Size еще не считанных данных).
Примечания
Эта функция может вызываться только из функции модели блока в момент реакции на события загрузки данных RDS_BFM_LOADBIN и загрузки состояния RDS_BFM_LOADSTATE в двоичном формате. Во всех остальных случаях функция немедленно возвращает FALSE.
При загрузке данных или состояния каждого блока в двоичном формате RDS известен источник этих данных (это может быть файл на диске или область памяти) и общий размер сохраненных данных. Каждый вызов функции rdsReadBlockData считывает из этого источника Size байтов начиная с текущей позиции, записывает их в память по адресу Buffer и перемещает внутренний указатель этого источника данных вперед на Size. Эта функция очень похожа на большинство функций стандартных библиотек, читающих данные из файла, только в ней не нужно указывать дескриптор файла или другого источника данных – он определяется RDS и инициализируется перед вызовом реакций на события RDS_BFM_LOADBIN и RDS_BFM_LOADSTATE.
Функция не может считать данных больше, чем было записано функцией rdsWriteBlockData при их сохранении. Если, например, при сохранении данных (событие RDS_BFM_SAVEBIN) или состояния (событие RDS_BFM_SAVESTATE) было всего записано 20 байтов одним или нескольким последовательными вызовами rdsWriteBlockData, вызовами rdsReadBlockData тоже можно считать не более двадцати байтов, не важно, будет это 20 вызовов для чтения по одному байту, два последовательных вызова для чтения пяти и пятнадцати байтов, один вызов для чтения двадцати байтов и т.п. Если при очередном вызове в параметре Size будет указано больше байтов, чем осталось в источнике, функция вернет FALSE.
Пример
Примеры использования функции rdsReadBlockData приведены в §2.8.2, §2.12.4 и §2.14.3 руководства программиста.
См. также