IntPtr ISQLite3Provider.sqlite3_backup_init(IntPtr destDb, string destName, IntPtr sourceDb, string sourceName) { // TODO null string? GCHandle dest_pinned = GCHandle.Alloc(util.to_utf8(destName), GCHandleType.Pinned); IntPtr dest_ptr = dest_pinned.AddrOfPinnedObject(); // TODO null string? GCHandle source_pinned = GCHandle.Alloc(util.to_utf8(sourceName), GCHandleType.Pinned); IntPtr source_ptr = source_pinned.AddrOfPinnedObject(); IntPtr result = new IntPtr(SQLite3RuntimeProvider.sqlite3_backup_init(destDb.ToInt64(), dest_ptr.ToInt64(), sourceDb.ToInt64(), source_ptr.ToInt64())); dest_pinned.Free(); source_pinned.Free(); return(result); }