Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.7. Сохранение и загрузка состояния схемы
А.5.7.2. rdsLoadSystemState – загрузить сохраненное состояние
Функция rdsLoadSystemState загружает ранее сохраненное состояние схемы.
BOOL RDSCALL rdsLoadSystemState( int StateNum, // Номер состояния RDS_BBhpB CallBack // Функция проверки );
Тип указателя на эту функцию
RDS_BICb2
Параметры
- StateNum (int)
- Номер загружаемого состояния схемы, присвоенный ему при сохранении.
- CallBack (RDS_BBhpB)
- Указатель на пользовательскую функцию, которую нужно вызвать для каждого блока,
состояние которого будет загружаться, или NULL, если такой функции нет.
С помощью этой пользовательской функции можно, при необходимости, запретить загрузку состояния отдельных
блоков. Она должна иметь следующий вид:
BOOL RDSCALL имя_функции(RDS_BHANDLE block,BOOL *pgo);
В параметре block пользовательской функции передается идентификатор блока, состояние которого должно сейчас загрузиться. Если состояние этого блока нужно загрузить, функция должна вернуть TRUE, если же его нужно пропустить и перейти к загрузке состояния следующего блока, функция должна вернуть FALSE. В параметре pgo передается указатель на логическую переменную, в которую функция может записать FALSE (исходно в этой переменной находится TRUE), чтобы после обработки блока block прекратить загрузку состояний оставшихся блоков.
Возвращаемое значение
TRUE, если состояние системы загружено, FALSE в противном случае (нет состояния с номером StateNum).
Примечания
Эта функция загружает состояние схемы, ранее сохраненное функцией rdsSaveSystemState. При необходимости, в параметре CallBack можно передать указатель на функцию обратного вызова, с помощью которой можно разрешать или запрещать загрузку состояния каждого из блоков, а также прервать загрузку состояния в нужный момент. Если в CallBack передано значение NULL, будут загружены все состояния сохраненных блоков.
При загрузке состояния всем статическим переменным блока присваиваются значения, которые они имели на момент сохранения, после чего модель блока вызывается для реакции на событие RDS_BFM_LOADSTATE, в которой она должна загрузить из памяти все данные, записанные туда при реакции на событие RDS_BFM_SAVESTATE.
Если после сохранения состояния один из блоков схемы был удален или изменил структуру статических переменных (что делает невозможным загрузку состояния этого блока, поскольку новая структура не соответствует сохраненной), вызов rdsLoadSystemState не приведет к ошибкам – состояния проблемных блоков просто не будут загружены.
Пример
Пример использования функции rdsLoadSystemState приведен в §2.14.3 руководства программиста.
См. также
rdsSaveSystemState, RDS_BFM_LOADSTATE, RDS_BFM_SAVESTATE, rdsReadBlockData.