-C Change\sto\scompile-time\soption\sthat\somits\snon-UWP\ssystem\scalls\sto\nSQLITE_UWP.\s\sTakes\ssteps\sto\seliminate\sall\snon-UWP\ssystem\scalls\swhen\sthat\ncompile-time\soption\sis\sused.
-D 2026-05-13T18:07:01.202
+C Additional\schanges\sto\sthe\sWindows\sVFS\sto\stry\sto\sget\sthe\ssystem\sto\sa\spoint\nwhere\sit\swill\scompile\sfor\sUWP.
+D 2026-05-13T20:06:08.009
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F src/os_kv.c e7d96727db5b67e39d590a68cc61c86daf4c093c36c011a09ebfb521182ec28d
F src/os_setup.h 8efc64eda6a6c2f221387eefc2e7e45fd5a3d5c8337a7a83519ba4fbd2957ae2
F src/os_unix.c a07dce662f6c4e18098f6faa9f7ec7cf311f56ee9151bed2aad4dcd55852c9e2
-F src/os_win.c c9e1a153e9060a9ce98ae447b305f74dbd619dc62f1e52c52f25f0709031554d
+F src/os_win.c 40d27b5172a1c717e4a425d91481c816f6cd8d896ea8ff76cc97762e15c63726
F src/os_win.h c06ccc3a090cf54202ea58981c298817f3309d4c9e4d52ad0a02927346493721
F src/pager.c fbec9063ea139dfa5d94ce540671752b89f8e8dc38f8a1f614bab1aa04a2dd40
F src/pager.h 6137149346e6c8a3ddc1eeb40aee46381e9bc8b0fcc6dda8a1efde993c2275b8
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P 3c51436b43ab77b88134851a2773147b49a3c4fb5b0416db5e318b6e12d3b708
-R 0f25f96371c055952175c297cbaf04d6
+P b167c4c96e6a753952eb4be95d6283b50a9c59f4ecf59d60cf10d8de9cb115d8
+R f066d4eda59be22d296a3e1a1cf73d03
U drh
-Z 021116e6f51fa817faa469cbfc4eae38
+Z 5430e3ed6629c616c0df3c5d9bb8cb87
# Remove this line to create a well-formed Fossil manifest.
#define osFormatMessageW ((DWORD(WINAPI*)(DWORD,LPCVOID,DWORD,DWORD,LPWSTR, \
DWORD,va_list*))aSyscall[7].pCurrent)
-#if !defined(SQLITE_OMIT_LOAD_EXTENSION)
+#if !defined(SQLITE_OMIT_LOAD_EXTENSION) && !defined(SQLITE_UWP)
{ "FreeLibrary", (SYSCALL)FreeLibrary, 0 },
#else
{ "FreeLibrary", (SYSCALL)0, 0 },
#define osGetFileAttributesExW ((BOOL(WINAPI*)(LPCWSTR,GET_FILEEX_INFO_LEVELS, \
LPVOID))aSyscall[11].pCurrent)
- { "GetFileSize", (SYSCALL)GetFileSize, 0 },
-#define osGetFileSize ((DWORD(WINAPI*)(HANDLE,LPDWORD))aSyscall[12].pCurrent)
+ { "GetFileSizeEx", (SYSCALL)GetFileSizeEx, 0 },
+#define osGetFileSizeEx ((BOOL(WINAPI*)(HANDLE, \
+ PLARGE_INTEGER))aSyscall[12].pCurrent)
{ "GetFullPathNameW", (SYSCALL)GetFullPathNameW, 0 },
#define osGetFullPathNameW ((DWORD(WINAPI*)(LPCWSTR,DWORD,LPWSTR, \
{ "GetLastError", (SYSCALL)GetLastError, 0 },
#define osGetLastError ((DWORD(WINAPI*)(VOID))aSyscall[14].pCurrent)
-#if !defined(SQLITE_OMIT_LOAD_EXTENSION)
+#if !defined(SQLITE_OMIT_LOAD_EXTENSION) && !defined(SQLITE_UWP)
{ "GetProcAddressA", (SYSCALL)GetProcAddress, 0 },
#else
{ "GetProcAddressA", (SYSCALL)0, 0 },
#define osHeapCompact ((UINT(WINAPI*)(HANDLE,DWORD))aSyscall[27].pCurrent)
-#if !defined(SQLITE_OMIT_LOAD_EXTENSION)
+#if !defined(SQLITE_OMIT_LOAD_EXTENSION) && !defined(SQLITE_UWP)
{ "LoadLibraryW", (SYSCALL)LoadLibraryW, 0 },
#else
{ "LoadLibraryW", (SYSCALL)0, 0 },
{ "SetEndOfFile", (SYSCALL)SetEndOfFile, 0 },
#define osSetEndOfFile ((BOOL(WINAPI*)(HANDLE))aSyscall[36].pCurrent)
- { "SetFilePointer", (SYSCALL)SetFilePointer, 0 },
-#define osSetFilePointer ((DWORD(WINAPI*)(HANDLE,LONG,PLONG, \
- DWORD))aSyscall[37].pCurrent)
+ { "SetFilePointerEx", (SYSCALL)SetFilePointerEx, 0 },
+#define osSetFilePointerEx ((BOOL(WINAPI*)(HANDLE,LARGE_INTEGER,\
+ PLARGE_INTEGER,DWORD))aSyscall[37].pCurrent)
{ "Sleep", (SYSCALL)Sleep, 0 },
#define osSleep ((VOID(WINAPI*)(DWORD))aSyscall[38].pCurrent)
*/
static int winHandleSeek(HANDLE h, sqlite3_int64 iOffset){
int rc = SQLITE_OK; /* Return value */
+ LARGE_INTEGER x; /* The offset */
- LONG upperBits; /* Most sig. 32 bits of new offset */
- LONG lowerBits; /* Least sig. 32 bits of new offset */
- DWORD dwRet; /* Value returned by SetFilePointer() */
-
- upperBits = (LONG)((iOffset>>32) & 0x7fffffff);
- lowerBits = (LONG)(iOffset & 0xffffffff);
-
- dwRet = osSetFilePointer(h, lowerBits, &upperBits, FILE_BEGIN);
-
- /* API oddity: If successful, SetFilePointer() returns a dword
- ** containing the lower 32-bits of the new file-offset. Or, if it fails,
- ** it returns INVALID_SET_FILE_POINTER. However according to MSDN,
- ** INVALID_SET_FILE_POINTER may also be a valid new offset. So to determine
- ** whether an error has actually occurred, it is also necessary to call
- ** GetLastError(). */
- if( dwRet==INVALID_SET_FILE_POINTER ){
- DWORD lastErrno = osGetLastError();
- if( lastErrno!=NO_ERROR ){
- rc = SQLITE_IOERR_SEEK;
- }
+ x.QuadPart = iOffset;
+ if( osSetFilePointerEx(h, x, 0, FILE_BEGIN)==0 ){
+ rc = SQLITE_IOERR_SEEK;
}
OSTRACE(("SEEK file=%p, offset=%lld rc=%s\n", h, iOffset,sqlite3ErrName(rc)));
return rc;
*/
static int winHandleSize(HANDLE h, sqlite3_int64 *pnByte){
int rc = SQLITE_OK;
- DWORD upperBits = 0;
- DWORD lowerBits = 0;
-
+ LARGE_INTEGER x;
assert( pnByte );
- lowerBits = osGetFileSize(h, &upperBits);
- *pnByte = (((sqlite3_int64)upperBits)<<32) + lowerBits;
- if( lowerBits==INVALID_FILE_SIZE && osGetLastError()!=NO_ERROR ){
+ if( osGetFileSizeEx(h, &x)==0 ){
rc = SQLITE_IOERR_FSTAT;
+ *pnByte = 0;
+ }else{
+ *pnByte = x.QuadPart;
}
return rc;
}
SimulateIOError(return SQLITE_IOERR_FSTAT);
OSTRACE(("SIZE file=%p, pSize=%p\n", pFile->h, pSize));
{
- DWORD upperBits;
- DWORD lowerBits;
- DWORD lastErrno;
-
- lowerBits = osGetFileSize(pFile->h, &upperBits);
- *pSize = (((sqlite3_int64)upperBits)<<32) + lowerBits;
- if( (lowerBits == INVALID_FILE_SIZE)
- && ((lastErrno = osGetLastError())!=NO_ERROR) ){
- pFile->lastErrno = lastErrno;
+ LARGE_INTEGER x;
+ if( osGetFileSizeEx(pFile->h, &x)==0 ){
+ *pSize = 0;
+ pFile->lastErrno = osGetLastError();
rc = winLogError(SQLITE_IOERR_FSTAT, pFile->lastErrno,
"winFileSize", pFile->zPath);
+ }else{
+ *pSize = x.QuadPart;
}
}
OSTRACE(("SIZE file=%p, pSize=%p, *pSize=%lld, rc=%s\n",
** within the shared library, and closing the shared library.
*/
static void *winDlOpen(sqlite3_vfs *pVfs, const char *zFilename){
- HANDLE h;
+ HANDLE h = 0;
void *zConverted = winConvertFromUtf8Filename(zFilename);
UNUSED_PARAMETER(pVfs);
if( zConverted==0 ){
OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)0));
return 0;
}
- h = osLoadLibraryW((LPCWSTR)zConverted);
+ h = osLoadLibraryW ? osLoadLibraryW((LPCWSTR)zConverted) : 0;
OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)h));
sqlite3_free(zConverted);
return (void*)h;
winGetLastErrorMsg(osGetLastError(), nBuf, zBufOut);
}
static void (*winDlSym(sqlite3_vfs *pVfs,void *pH,const char *zSym))(void){
- FARPROC proc;
+ FARPROC proc = 0;
UNUSED_PARAMETER(pVfs);
- proc = osGetProcAddressA((HANDLE)pH, zSym);
+ proc = osGetProcAddressA ? osGetProcAddressA((HANDLE)pH, zSym) : 0;
OSTRACE(("DLSYM handle=%p, symbol=%s, address=%p\n",
(void*)pH, zSym, (void*)proc));
return (void(*)(void))proc;
}
static void winDlClose(sqlite3_vfs *pVfs, void *pHandle){
UNUSED_PARAMETER(pVfs);
- osFreeLibrary((HANDLE)pHandle);
+ if( osFreeLibrary!=0 ) osFreeLibrary((HANDLE)pHandle);
OSTRACE(("DLCLOSE handle=%p\n", (void*)pHandle));
}
#else /* if SQLITE_OMIT_LOAD_EXTENSION is defined: */