xref: /sqlite-3.40.0/src/os_win.h (revision 43f58d6a)
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