xref: /aosp_15_r20/external/lzma/CPP/Windows/NtCheck.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // Windows/NtCheck.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_WINDOWS_NT_CHECK_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_WINDOWS_NT_CHECK_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #ifdef _WIN32
7*f6dc9357SAndroid Build Coastguard Worker 
8*f6dc9357SAndroid Build Coastguard Worker #include "../Common/MyWindows.h"
9*f6dc9357SAndroid Build Coastguard Worker 
10*f6dc9357SAndroid Build Coastguard Worker #if !defined(_WIN64) && !defined(UNDER_CE)
11*f6dc9357SAndroid Build Coastguard Worker 
12*f6dc9357SAndroid Build Coastguard Worker #if defined(_MSC_VER) && _MSC_VER >= 1900
13*f6dc9357SAndroid Build Coastguard Worker #pragma warning(push)
14*f6dc9357SAndroid Build Coastguard Worker // GetVersionExW was declared deprecated
15*f6dc9357SAndroid Build Coastguard Worker #pragma warning(disable : 4996)
16*f6dc9357SAndroid Build Coastguard Worker #endif
IsItWindowsNT()17*f6dc9357SAndroid Build Coastguard Worker static inline bool IsItWindowsNT()
18*f6dc9357SAndroid Build Coastguard Worker {
19*f6dc9357SAndroid Build Coastguard Worker   OSVERSIONINFO vi;
20*f6dc9357SAndroid Build Coastguard Worker   vi.dwOSVersionInfoSize = sizeof(vi);
21*f6dc9357SAndroid Build Coastguard Worker   return (::GetVersionEx(&vi) && vi.dwPlatformId == VER_PLATFORM_WIN32_NT);
22*f6dc9357SAndroid Build Coastguard Worker }
23*f6dc9357SAndroid Build Coastguard Worker #if defined(_MSC_VER) && _MSC_VER >= 1900
24*f6dc9357SAndroid Build Coastguard Worker #pragma warning(pop)
25*f6dc9357SAndroid Build Coastguard Worker #endif
26*f6dc9357SAndroid Build Coastguard Worker 
27*f6dc9357SAndroid Build Coastguard Worker #endif
28*f6dc9357SAndroid Build Coastguard Worker 
29*f6dc9357SAndroid Build Coastguard Worker #ifndef _UNICODE
30*f6dc9357SAndroid Build Coastguard Worker     extern
31*f6dc9357SAndroid Build Coastguard Worker     bool g_IsNT;
32*f6dc9357SAndroid Build Coastguard Worker   #if defined(_WIN64) || defined(UNDER_CE)
33*f6dc9357SAndroid Build Coastguard Worker     bool g_IsNT = true;
34*f6dc9357SAndroid Build Coastguard Worker     #define SET_IS_NT
35*f6dc9357SAndroid Build Coastguard Worker   #else
36*f6dc9357SAndroid Build Coastguard Worker     bool g_IsNT = false;
37*f6dc9357SAndroid Build Coastguard Worker     #define SET_IS_NT g_IsNT = IsItWindowsNT();
38*f6dc9357SAndroid Build Coastguard Worker   #endif
39*f6dc9357SAndroid Build Coastguard Worker   #define NT_CHECK_ACTION
40*f6dc9357SAndroid Build Coastguard Worker   // #define NT_CHECK_ACTION { NT_CHECK_FAIL_ACTION }
41*f6dc9357SAndroid Build Coastguard Worker #else
42*f6dc9357SAndroid Build Coastguard Worker   #if !defined(_WIN64) && !defined(UNDER_CE)
43*f6dc9357SAndroid Build Coastguard Worker     #define NT_CHECK_ACTION if (!IsItWindowsNT()) { NT_CHECK_FAIL_ACTION }
44*f6dc9357SAndroid Build Coastguard Worker   #else
45*f6dc9357SAndroid Build Coastguard Worker     #define NT_CHECK_ACTION
46*f6dc9357SAndroid Build Coastguard Worker   #endif
47*f6dc9357SAndroid Build Coastguard Worker   #define SET_IS_NT
48*f6dc9357SAndroid Build Coastguard Worker #endif
49*f6dc9357SAndroid Build Coastguard Worker 
50*f6dc9357SAndroid Build Coastguard Worker #define NT_CHECK  NT_CHECK_ACTION SET_IS_NT
51*f6dc9357SAndroid Build Coastguard Worker 
52*f6dc9357SAndroid Build Coastguard Worker #else
53*f6dc9357SAndroid Build Coastguard Worker 
54*f6dc9357SAndroid Build Coastguard Worker #define NT_CHECK
55*f6dc9357SAndroid Build Coastguard Worker 
56*f6dc9357SAndroid Build Coastguard Worker #endif
57*f6dc9357SAndroid Build Coastguard Worker 
58*f6dc9357SAndroid Build Coastguard Worker #endif
59