1 /* 2 ** 2013 November 25 3 ** 4 ** The author disclaims copyright to this source code. In place of 5 ** a legal notice, here is a blessing: 6 ** 7 ** May you do good and not evil. 8 ** May you find forgiveness for yourself and forgive others. 9 ** May you share freely, never taking more than you give. 10 ** 11 ****************************************************************************** 12 ** 13 ** This file contains code that is specific to Windows. 14 */ 15 #ifndef SQLITE_OS_WIN_H 16 #define SQLITE_OS_WIN_H 17 18 /* 19 ** Include the primary Windows SDK header file. 20 */ 21 #include "windows.h" 22 23 #ifdef __CYGWIN__ 24 # include <sys/cygwin.h> 25 # include <errno.h> /* amalgamator: dontcache */ 26 #endif 27 28 /* 29 ** Determine if we are dealing with Windows NT. 30 ** 31 ** We ought to be able to determine if we are compiling for Windows 9x or 32 ** Windows NT using the _WIN32_WINNT macro as follows: 33 ** 34 ** #if defined(_WIN32_WINNT) 35 ** # define SQLITE_OS_WINNT 1 36 ** #else 37 ** # define SQLITE_OS_WINNT 0 38 ** #endif 39 ** 40 ** However, Visual Studio 2005 does not set _WIN32_WINNT by default, as 41 ** it ought to, so the above test does not work. We'll just assume that 42 ** everything is Windows NT unless the programmer explicitly says otherwise 43 ** by setting SQLITE_OS_WINNT to 0. 44 */ 45 #if SQLITE_OS_WIN && !defined(SQLITE_OS_WINNT) 46 # define SQLITE_OS_WINNT 1 47 #endif 48 49 /* 50 ** Determine if we are dealing with Windows CE - which has a much reduced 51 ** API. 52 */ 53 #if defined(_WIN32_WCE) 54 # define SQLITE_OS_WINCE 1 55 #else 56 # define SQLITE_OS_WINCE 0 57 #endif 58 59 /* 60 ** Determine if we are dealing with WinRT, which provides only a subset of 61 ** the full Win32 API. 62 */ 63 #if !defined(SQLITE_OS_WINRT) 64 # define SQLITE_OS_WINRT 0 65 #endif 66 67 /* 68 ** For WinCE, some API function parameters do not appear to be declared as 69 ** volatile. 70 */ 71 #if SQLITE_OS_WINCE 72 # define SQLITE_WIN32_VOLATILE 73 #else 74 # define SQLITE_WIN32_VOLATILE volatile 75 #endif 76 77 /* 78 ** For some Windows sub-platforms, the _beginthreadex() / _endthreadex() 79 ** functions are not available (e.g. those not using MSVC, Cygwin, etc). 80 */ 81 #if SQLITE_OS_WIN && !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && \ 82 SQLITE_THREADSAFE>0 && !defined(__CYGWIN__) 83 # define SQLITE_OS_WIN_THREADS 1 84 #else 85 # define SQLITE_OS_WIN_THREADS 0 86 #endif 87 88 #endif /* SQLITE_OS_WIN_H */ 89