/ Hex Artifact Content
Login

Artifact 09e751b20bbc107ffbd46e13555dc73576d88e21:


0000: 2f 2a 0a 2a 2a 20 32 30 31 33 20 4e 6f 76 65 6d  /*.** 2013 Novem
0010: 62 65 72 20 32 35 0a 2a 2a 0a 2a 2a 20 54 68 65  ber 25.**.** The
0020: 20 61 75 74 68 6f 72 20 64 69 73 63 6c 61 69 6d   author disclaim
0030: 73 20 63 6f 70 79 72 69 67 68 74 20 74 6f 20 74  s copyright to t
0040: 68 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65 2e  his source code.
0050: 20 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a 2a    In place of.**
0060: 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65 2c   a legal notice,
0070: 20 68 65 72 65 20 69 73 20 61 20 62 6c 65 73 73   here is a bless
0080: 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d 61  ing:.**.**    Ma
0090: 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61 6e  y you do good an
00a0: 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20 20  d not evil..**  
00b0: 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66    May you find f
00c0: 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79  orgiveness for y
00d0: 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67  ourself and forg
00e0: 69 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20 20  ive others..**  
00f0: 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20    May you share 
0100: 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61  freely, never ta
0110: 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79  king more than y
0120: 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a  ou give..**.****
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0170: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a  **********.**.**
0180: 20 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 61   This file conta
0190: 69 6e 73 20 63 6f 64 65 20 74 68 61 74 20 69 73  ins code that is
01a0: 20 73 70 65 63 69 66 69 63 20 74 6f 20 57 69 6e   specific to Win
01b0: 64 6f 77 73 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66  dows..*/.#ifndef
01c0: 20 5f 4f 53 5f 57 49 4e 5f 48 5f 0a 23 64 65 66   _OS_WIN_H_.#def
01d0: 69 6e 65 20 5f 4f 53 5f 57 49 4e 5f 48 5f 0a 0a  ine _OS_WIN_H_..
01e0: 2f 2a 0a 2a 2a 20 49 6e 63 6c 75 64 65 20 74 68  /*.** Include th
01f0: 65 20 70 72 69 6d 61 72 79 20 57 69 6e 64 6f 77  e primary Window
0200: 73 20 53 44 4b 20 68 65 61 64 65 72 20 66 69 6c  s SDK header fil
0210: 65 2e 0a 2a 2f 0a 23 69 6e 63 6c 75 64 65 20 22  e..*/.#include "
0220: 77 69 6e 64 6f 77 73 2e 68 22 0a 0a 23 69 66 64  windows.h"..#ifd
0230: 65 66 20 5f 5f 43 59 47 57 49 4e 5f 5f 0a 23 20  ef __CYGWIN__.# 
0240: 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 63 79 67  include <sys/cyg
0250: 77 69 6e 2e 68 3e 0a 23 20 69 6e 63 6c 75 64 65  win.h>.# include
0260: 20 3c 65 72 72 6e 6f 2e 68 3e 20 2f 2a 20 61 6d   <errno.h> /* am
0270: 61 6c 67 61 6d 61 74 6f 72 3a 20 64 6f 6e 74 63  algamator: dontc
0280: 61 63 68 65 20 2a 2f 0a 23 65 6e 64 69 66 0a 0a  ache */.#endif..
0290: 2f 2a 0a 2a 2a 20 44 65 74 65 72 6d 69 6e 65 20  /*.** Determine 
02a0: 69 66 20 77 65 20 61 72 65 20 64 65 61 6c 69 6e  if we are dealin
02b0: 67 20 77 69 74 68 20 57 69 6e 64 6f 77 73 20 4e  g with Windows N
02c0: 54 2e 0a 2a 2a 0a 2a 2a 20 57 65 20 6f 75 67 68  T..**.** We ough
02d0: 74 20 74 6f 20 62 65 20 61 62 6c 65 20 74 6f 20  t to be able to 
02e0: 64 65 74 65 72 6d 69 6e 65 20 69 66 20 77 65 20  determine if we 
02f0: 61 72 65 20 63 6f 6d 70 69 6c 69 6e 67 20 66 6f  are compiling fo
0300: 72 20 57 69 6e 64 6f 77 73 20 39 78 20 6f 72 0a  r Windows 9x or.
0310: 2a 2a 20 57 69 6e 64 6f 77 73 20 4e 54 20 75 73  ** Windows NT us
0320: 69 6e 67 20 74 68 65 20 5f 57 49 4e 33 32 5f 57  ing the _WIN32_W
0330: 49 4e 4e 54 20 6d 61 63 72 6f 20 61 73 20 66 6f  INNT macro as fo
0340: 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 23 69 66  llows:.**.** #if
0350: 20 64 65 66 69 6e 65 64 28 5f 57 49 4e 33 32 5f   defined(_WIN32_
0360: 57 49 4e 4e 54 29 0a 2a 2a 20 23 20 64 65 66 69  WINNT).** # defi
0370: 6e 65 20 53 51 4c 49 54 45 5f 4f 53 5f 57 49 4e  ne SQLITE_OS_WIN
0380: 4e 54 20 31 0a 2a 2a 20 23 65 6c 73 65 0a 2a 2a  NT 1.** #else.**
0390: 20 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45   # define SQLITE
03a0: 5f 4f 53 5f 57 49 4e 4e 54 20 30 0a 2a 2a 20 23  _OS_WINNT 0.** #
03b0: 65 6e 64 69 66 0a 2a 2a 0a 2a 2a 20 48 6f 77 65  endif.**.** Howe
03c0: 76 65 72 2c 20 56 69 73 75 61 6c 20 53 74 75 64  ver, Visual Stud
03d0: 69 6f 20 32 30 30 35 20 64 6f 65 73 20 6e 6f 74  io 2005 does not
03e0: 20 73 65 74 20 5f 57 49 4e 33 32 5f 57 49 4e 4e   set _WIN32_WINN
03f0: 54 20 62 79 20 64 65 66 61 75 6c 74 2c 20 61 73  T by default, as
0400: 0a 2a 2a 20 69 74 20 6f 75 67 68 74 20 74 6f 2c  .** it ought to,
0410: 20 73 6f 20 74 68 65 20 61 62 6f 76 65 20 74 65   so the above te
0420: 73 74 20 64 6f 65 73 20 6e 6f 74 20 77 6f 72 6b  st does not work
0430: 2e 20 20 57 65 27 6c 6c 20 6a 75 73 74 20 61 73  .  We'll just as
0440: 73 75 6d 65 20 74 68 61 74 0a 2a 2a 20 65 76 65  sume that.** eve
0450: 72 79 74 68 69 6e 67 20 69 73 20 57 69 6e 64 6f  rything is Windo
0460: 77 73 20 4e 54 20 75 6e 6c 65 73 73 20 74 68 65  ws NT unless the
0470: 20 70 72 6f 67 72 61 6d 6d 65 72 20 65 78 70 6c   programmer expl
0480: 69 63 69 74 6c 79 20 73 61 79 73 20 6f 74 68 65  icitly says othe
0490: 72 77 69 73 65 0a 2a 2a 20 62 79 20 73 65 74 74  rwise.** by sett
04a0: 69 6e 67 20 53 51 4c 49 54 45 5f 4f 53 5f 57 49  ing SQLITE_OS_WI
04b0: 4e 4e 54 20 74 6f 20 30 2e 0a 2a 2f 0a 23 69 66  NNT to 0..*/.#if
04c0: 20 53 51 4c 49 54 45 5f 4f 53 5f 57 49 4e 20 26   SQLITE_OS_WIN &
04d0: 26 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54  & !defined(SQLIT
04e0: 45 5f 4f 53 5f 57 49 4e 4e 54 29 0a 23 20 64 65  E_OS_WINNT).# de
04f0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 53 5f 57  fine SQLITE_OS_W
0500: 49 4e 4e 54 20 31 0a 23 65 6e 64 69 66 0a 0a 2f  INNT 1.#endif../
0510: 2a 0a 2a 2a 20 44 65 74 65 72 6d 69 6e 65 20 69  *.** Determine i
0520: 66 20 77 65 20 61 72 65 20 64 65 61 6c 69 6e 67  f we are dealing
0530: 20 77 69 74 68 20 57 69 6e 64 6f 77 73 20 43 45   with Windows CE
0540: 20 2d 20 77 68 69 63 68 20 68 61 73 20 61 20 6d   - which has a m
0550: 75 63 68 20 72 65 64 75 63 65 64 0a 2a 2a 20 41  uch reduced.** A
0560: 50 49 2e 0a 2a 2f 0a 23 69 66 20 64 65 66 69 6e  PI..*/.#if defin
0570: 65 64 28 5f 57 49 4e 33 32 5f 57 43 45 29 0a 23  ed(_WIN32_WCE).#
0580: 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f   define SQLITE_O
0590: 53 5f 57 49 4e 43 45 20 31 0a 23 65 6c 73 65 0a  S_WINCE 1.#else.
05a0: 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  # define SQLITE_
05b0: 4f 53 5f 57 49 4e 43 45 20 30 0a 23 65 6e 64 69  OS_WINCE 0.#endi
05c0: 66 0a 0a 2f 2a 0a 2a 2a 20 44 65 74 65 72 6d 69  f../*.** Determi
05d0: 6e 65 20 69 66 20 77 65 20 61 72 65 20 64 65 61  ne if we are dea
05e0: 6c 69 6e 67 20 77 69 74 68 20 57 69 6e 52 54 2c  ling with WinRT,
05f0: 20 77 68 69 63 68 20 70 72 6f 76 69 64 65 73 20   which provides 
0600: 6f 6e 6c 79 20 61 20 73 75 62 73 65 74 20 6f 66  only a subset of
0610: 0a 2a 2a 20 74 68 65 20 66 75 6c 6c 20 57 69 6e  .** the full Win
0620: 33 32 20 41 50 49 2e 0a 2a 2f 0a 23 69 66 20 21  32 API..*/.#if !
0630: 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f  defined(SQLITE_O
0640: 53 5f 57 49 4e 52 54 29 0a 23 20 64 65 66 69 6e  S_WINRT).# defin
0650: 65 20 53 51 4c 49 54 45 5f 4f 53 5f 57 49 4e 52  e SQLITE_OS_WINR
0660: 54 20 30 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a  T 0.#endif../*.*
0670: 2a 20 46 6f 72 20 57 69 6e 43 45 2c 20 73 6f 6d  * For WinCE, som
0680: 65 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 70  e API function p
0690: 61 72 61 6d 65 74 65 72 73 20 64 6f 20 6e 6f 74  arameters do not
06a0: 20 61 70 70 65 61 72 20 74 6f 20 62 65 20 64 65   appear to be de
06b0: 63 6c 61 72 65 64 20 61 73 0a 2a 2a 20 76 6f 6c  clared as.** vol
06c0: 61 74 69 6c 65 2e 0a 2a 2f 0a 23 69 66 20 53 51  atile..*/.#if SQ
06d0: 4c 49 54 45 5f 4f 53 5f 57 49 4e 43 45 0a 23 20  LITE_OS_WINCE.# 
06e0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 57 49  define SQLITE_WI
06f0: 4e 33 32 5f 56 4f 4c 41 54 49 4c 45 0a 23 65 6c  N32_VOLATILE.#el
0700: 73 65 0a 23 20 64 65 66 69 6e 65 20 53 51 4c 49  se.# define SQLI
0710: 54 45 5f 57 49 4e 33 32 5f 56 4f 4c 41 54 49 4c  TE_WIN32_VOLATIL
0720: 45 20 76 6f 6c 61 74 69 6c 65 0a 23 65 6e 64 69  E volatile.#endi
0730: 66 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 5f 4f 53  f..#endif /* _OS
0740: 5f 57 49 4e 5f 48 5f 20 2a 2f 0a                 _WIN_H_ */.