Modify the sqlite3OsFileControl() interface to detect unopened sqlite3_file
[sqlite.git] / src / os_win.h
blob27714ed079344dcc7b81ea34e94598e0e52f2f97
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.
11 ******************************************************************************
13 ** This file contains code that is specific to Windows.
15 #ifndef SQLITE_OS_WIN_H
16 #define SQLITE_OS_WIN_H
19 ** Include the primary Windows SDK header file.
21 #include "windows.h"
23 #ifdef __CYGWIN__
24 # include <sys/cygwin.h>
25 # include <errno.h> /* amalgamator: dontcache */
26 #endif
29 ** Determine if we are dealing with Windows NT.
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:
34 ** #if defined(_WIN32_WINNT)
35 ** # define SQLITE_OS_WINNT 1
36 ** #else
37 ** # define SQLITE_OS_WINNT 0
38 ** #endif
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.
45 #if SQLITE_OS_WIN && !defined(SQLITE_OS_WINNT)
46 # define SQLITE_OS_WINNT 1
47 #endif
50 ** Determine if we are dealing with Windows CE - which has a much reduced
51 ** API.
53 #if defined(_WIN32_WCE)
54 # define SQLITE_OS_WINCE 1
55 #else
56 # define SQLITE_OS_WINCE 0
57 #endif
60 ** Determine if we are dealing with WinRT, which provides only a subset of
61 ** the full Win32 API.
63 #if !defined(SQLITE_OS_WINRT)
64 # define SQLITE_OS_WINRT 0
65 #endif
68 ** For WinCE, some API function parameters do not appear to be declared as
69 ** volatile.
71 #if SQLITE_OS_WINCE
72 # define SQLITE_WIN32_VOLATILE
73 #else
74 # define SQLITE_WIN32_VOLATILE volatile
75 #endif
78 ** For some Windows sub-platforms, the _beginthreadex() / _endthreadex()
79 ** functions are not available (e.g. those not using MSVC, Cygwin, etc).
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
88 #endif /* SQLITE_OS_WIN_H */