1// Windows/NtCheck.h
2
3#ifndef __WINDOWS_NT_CHECK_H
4#define __WINDOWS_NT_CHECK_H
5
6#ifdef _WIN32
7
8#if !defined(_WIN64) && !defined(UNDER_CE)
9static inline bool IsItWindowsNT()
10{
11  OSVERSIONINFO vi;
12  vi.dwOSVersionInfoSize = sizeof(vi);
13  return (::GetVersionEx(&vi) && vi.dwPlatformId == VER_PLATFORM_WIN32_NT);
14}
15#endif
16
17#ifndef _UNICODE
18  #if defined(_WIN64) || defined(UNDER_CE)
19    bool g_IsNT = true;
20    #define SET_IS_NT
21  #else
22    bool g_IsNT = false;
23    #define SET_IS_NT g_IsNT = IsItWindowsNT();
24  #endif
25  #define NT_CHECK_ACTION
26  // #define NT_CHECK_ACTION { NT_CHECK_FAIL_ACTION }
27#else
28  #if !defined(_WIN64) && !defined(UNDER_CE)
29    #define NT_CHECK_ACTION if (!IsItWindowsNT()) { NT_CHECK_FAIL_ACTION }
30  #else
31    #define NT_CHECK_ACTION
32  #endif
33  #define SET_IS_NT
34#endif
35
36#define NT_CHECK  NT_CHECK_ACTION SET_IS_NT
37
38#else
39
40#define NT_CHECK
41
42#endif
43
44#endif
45