sqlite.h


Carga automática de extensiones enlazadas estáticamente

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

Este interfaz hace que la función xEntryPoint() sea invocada para cada nueva conexión de base de datos que se cree. La idea es que xEntryPoint() sea el punto de entrada de una extensión SQLite enlazada estáticamente que debe ser cargada automáticamente en todas las nuevas conexiones de base de datos.

A pesar del prototipo de la función muestra que xEntryPoint() no tiene argumentos y retorna void, SQLite invoca xEntryPoint() con tres argumentos y espera un entero como resultado como si la declaración del punto de entrada fuese:

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

Si la rutina xEntryPoint encuentra un error, debe hacer que *pzErrMsg apunte a un mensaje de error apropiado (obtenido de sqlite3_mprintf()) y devolver un código de error apropiado. SQLite asegura que *pzErrMsg sea NULL antes de llamar a xEntryPoint(). SQLite invocará sqlite3_free() sobre *pzErrMsg después de que xEntryPoint() retorne. Si xEntryPoint() retorna un error, la función sqlite3_open(), sqlite3_open16() o sqlite3_open_v2() que haya provocado el xEntryPoint() fallará.

Llamar a Calling sqlite3_auto_extension(X) con un punto de entrada X que ya esté en la lista de extensiones automáticas es inofensivo, y no hace nada. Ningún punto de entrada será invocado más de una vez para cada conexión de base de datos que se abra.

Ver también: sqlite3_reset_auto_extension().