Welcome to mirror list, hosted at ThFree Co, Russian Federation.

host.c « host « src - github.com/windirstat/premake-4.x-stable.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: cbdc6a46eab9bbb1928362f3e2beafa89f5e722e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

#include "premake.h"

int windows_is_64bit_running_under_wow(struct lua_State* l)
{
#if PLATFORM_WINDOWS == 1
	typedef BOOL (WINAPI * wow_func_sig)(HANDLE,PBOOL);

	BOOL is_wow = FALSE;
	wow_func_sig func = (wow_func_sig)GetProcAddress(GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
	if(func)
		if(! func(GetCurrentProcess(),&is_wow))
			luaL_error(l,"IsWow64Process returned an error");
#else
	int is_wow = 0;
#endif
	lua_pushboolean(l,is_wow);
	return 1;
}

int windows_version(struct lua_State* l)
{
#if PLATFORM_WINDOWS == 1
    OSVERSIONINFO info = OSVERSIONINFO{0};
    info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
	GetVersionEx(&info);
	
	if( info.dwMajorVersion == 5 && info.dwMinorVersion == 0 )
		lua_pushliteral(l,"Windows2000");
	else if (info.dwMajorVersion == 5 && info.dwMinorVersion == 1 )
		lua_pushliteral(l,"WindowsXP");
	else if( info.dwMajorVersion == 5 && info.dwMinorVersion == 2 )
	{
		if ( OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION 
			&& SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
				lua_pushliteral(l,"WindowsXPProfessionalx64)"
			else if(OSVERSIONINFOEX.wSuiteMask & VER_SUITE_WH_SERVER)
				lua_pushliteral(l,"WindowsHomeServer");
			else if( GetSystemMetrics(SM_SERVERR2) == 0)
				lua_pushliteral(l,"WindowsServer2003");
			else
				lua_pushliteral(l,"WindowsServer2003R2")
				}
	else if( info.dwMajorVersion == 6 && info.dwMinorVersion == 0  )
	{
		if( OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION )
			lua_pushliteral(l,"WindowsVista");
		else
			lua_pushliteral(l,"WindowsServer2008");
	}
	else if ( info.dwMajorVersion == 6 && info.dwMinorVersion == 1  )
	{
		if (OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION)
			lua_pushliteral(l,"WindowsServer2008R2");
		else lua_pushliteral(l,"Windows7");
	}
	else
		lua_pushliteral(l,"unknown windows version");
#else
	lua_pushliteral(l,"host is not windows");
#endif

	return 1;
}