2013/11/4 Simon Slavin <slav...@bigfraud.org>:
> On 4 Nov 2013, at 6:32am, David de Regt <dav...@mylollc.com> wrote:
>> In Visual Studio 2013, which uses the Windows 8.1 Platform SDK, they've 
>> marked GetVersionEx as deprecated, trying to supercede it through to 
>> VerifyVersionInfo and some other hardcoded macros based on that call that 
>> the new SDK implements.  Looking at the SQLite source, it looks like it only 
>> uses the GetVersionEx call to test for whether LockFileEx is supported on 
>> the current OS (whether it's NT-based or not).
>
> Could you suggest equivalent code which would use VerifyVersionInfo instead ? 
>  Even a rough guide on where to find documentation on it would be useful.

I would suggest the following patch, which disables the GetVersionEx call
completely in this case: VS2013 doesn't support Win95/98/ME any more,
so runtime detection of the OS is not necessary; we can do this
compile-time, the SQLITE_WIN32_HAS_ANSI macro is already
available for doing that:

Regards,
           Jan Nijtmans

Index: src/os_win.c
==================================================================
--- src/os_win.c
+++ src/os_win.c
@@ -36,11 +36,12 @@

 /*
 ** Are most of the Win32 ANSI APIs available (i.e. with certain exceptions
 ** based on the sub-platform)?
 */
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && !defined(SQLITE_WIN32_NO_ANSI)
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && !defined(SQLITE_WIN32_NO_ANSI) \
+       && !(defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WIN8)
 #  define SQLITE_WIN32_HAS_ANSI
 #endif

 /*
 ** Are most of the Win32 Unicode APIs available (i.e. with certain exceptions
@@ -680,15 +681,11 @@
 #endif

 #define osGetVersionExA ((BOOL(WINAPI*)( \
         LPOSVERSIONINFOA))aSyscall[34].pCurrent)

-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE)
-  { "GetVersionExW",           (SYSCALL)GetVersionExW,           0 },
-#else
   { "GetVersionExW",           (SYSCALL)0,                       0 },
-#endif

 #define osGetVersionExW ((BOOL(WINAPI*)( \
         LPOSVERSIONINFOW))aSyscall[35].pCurrent)

   { "HeapAlloc",               (SYSCALL)HeapAlloc,               0 },
@@ -1152,19 +1149,13 @@
 #elif !defined(SQLITE_WIN32_HAS_WIDE)
 # define osIsNT()  (0)
 #else
   static int osIsNT(void){
     if( sqlite3_os_type==0 ){
-#if defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WIN8
-      OSVERSIONINFOW sInfo;
-      sInfo.dwOSVersionInfoSize = sizeof(sInfo);
-      osGetVersionExW(&sInfo);
-#else
       OSVERSIONINFOA sInfo;
       sInfo.dwOSVersionInfoSize = sizeof(sInfo);
       osGetVersionExA(&sInfo);
-#endif
       sqlite3_os_type = sInfo.dwPlatformId==VER_PLATFORM_WIN32_NT ? 2 : 1;
     }
     return sqlite3_os_type==2;
   }
 #endif
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to