Низкоуровневый контроль файлов базы данных
Интерфейс sqlite3_file_control() делает прямой вызов методу xFileControl для объекта sqlite3_io_methods, связанного с конкретной базой данных, идентифицируемой вторым аргументом. Название базы данных — "main" для основной базы данных или "temp" для временной базы данных, или имя, появляющееся после ключевого слова AS для баз данных, добавленных с помощью SQL-команды ATTACH. Вместо "main" можно использовать указатель NULL для ссылки на основной файл базы данных. Третий и четвёртый параметры этой функции передаются непосредственно во второй и третий параметры метода xFileControl. Возвращаемое значение метода xFileControl становится возвращаемым значением этой функции.
Несколько кодов команд для sqlite3_file_control() обрабатываются непосредственно ядром SQLite и никогда не вызывают метод sqlite3_io_methods.xFileControl. Значение SQLITE_FCNTL_FILE_POINTER для параметра op вызывает запись указателя на базовый объект sqlite3_file в область, на которую указывает четвёртый параметр. SQLITE_FCNTL_JOURNAL_POINTER работает аналогично, за исключением того, что он возвращает объект sqlite3_file, связанный с файлом журнала, а не основной базой данных. Код операции SQLITE_FCNTL_VFS_POINTER возвращает указатель на базовый объект sqlite3_vfs для файла. SQLITE_FCNTL_DATA_VERSION возвращает счетчик версии данных из пейджера.
Если второй параметр (zDbName) не соответствует имени какого-либо открытого файла базы данных, возвращается SQLITE_ERROR. Это значение ошибки не запоминается и не будет восстановлено функциями sqlite3_errcode() или sqlite3_errmsg(). Базовый метод xFileControl также может вернуть SQLITE_ERROR. Нет способа отличить неправильное значение zDbName от возвращаемого значения SQLITE_ERROR базовым методом xFileControl.
См. также: коды команд управления файлами
См. также списки Объектов, Констант и Функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/file_control.html