Spec-Zone.ru › SQLite

Автоматическая загрузка статически связанных расширений

int sqlite3_auto_extension(void(*xEntryPoint)(void));

Этот интерфейс вызывает функцию xEntryPoint() для каждого нового соединения с базой данных, которое создается. Идея заключается в том, что xEntryPoint() является точкой входа для статически связанного расширения SQLite, которое должно автоматически загружаться во все новые соединения с базой данных.

Несмотря на то, что прототип функции показывает, что xEntryPoint() не принимает аргументов и возвращает void, SQLite вызывает xEntryPoint() с тремя аргументами и ожидает целочисленный результат, как если бы сигнатура точки входа была следующей:

   int xEntryPoint(
     sqlite3 *db,
     const char **pzErrMsg,
     const struct sqlite3_api_routines *pThunk
   );

Если процедура xEntryPoint обнаруживает ошибку, она должна установить *pzErrMsg на соответствующее сообщение об ошибке (полученное из sqlite3_mprintf()) и вернуть соответствующий код ошибки. SQLite гарантирует, что *pzErrMsg равен NULL перед вызовом xEntryPoint(). SQLite вызовет sqlite3_free() для *pzErrMsg после возврата из xEntryPoint(). Если любой вызов xEntryPoint() вернет ошибку, вызов sqlite3_open(), sqlite3_open16() или sqlite3_open_v2(), вызвавший xEntryPoint(), завершится с ошибкой.

Вызов sqlite3_auto_extension(X) с точкой входа X, которая уже находится в списке автоматических расширений, является безопасной операцией без действия. Ни одна точка входа не будет вызвана более одного раза для каждого открытого соединения с базой данных.

См. также: sqlite3_reset_auto_extension() и sqlite3_cancel_auto_extension()

См. также списки объектов, констант и функций.

SQLite is in the Public Domain.
https://sqlite.org/c3ref/auto_extension.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API