mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Removed unneeded codes, for VC2010.
This commit is contained in:
parent
480a1bd1d6
commit
9f152e0076
@ -78,12 +78,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmd
|
|||||||
// _CrtSetBreakAlloc(5055);
|
// _CrtSetBreakAlloc(5055);
|
||||||
|
|
||||||
// Avoid loading a dll from current directory
|
// Avoid loading a dll from current directory
|
||||||
typedef BOOL (WINAPI *FPSETDLLDIRECTORYW)(LPCWSTR lpPathName);
|
SetDllDirectory(L"");
|
||||||
FPSETDLLDIRECTORYW SetDllDirectoryW = (FPSETDLLDIRECTORYW)GetProcAddress(GetModuleHandle(L"Kernel32.dll"), "SetDllDirectoryW");
|
|
||||||
if (SetDllDirectoryW)
|
|
||||||
{
|
|
||||||
SetDllDirectoryW(L"");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (lpCmdLine && lpCmdLine[0] == L'!')
|
if (lpCmdLine && lpCmdLine[0] == L'!')
|
||||||
{
|
{
|
||||||
|
@ -32,7 +32,6 @@
|
|||||||
#define Ft2Double(x) ((double)((x).dwHighDateTime) * 4.294967296E9 + (double)((x).dwLowDateTime))
|
#define Ft2Double(x) ((double)((x).dwHighDateTime) * 4.294967296E9 + (double)((x).dwLowDateTime))
|
||||||
|
|
||||||
PROCNTQSI CMeasureCPU::c_NtQuerySystemInformation = NULL;
|
PROCNTQSI CMeasureCPU::c_NtQuerySystemInformation = NULL;
|
||||||
PROCGST CMeasureCPU::c_GetSystemTimes = NULL;
|
|
||||||
int CMeasureCPU::c_NumOfProcessors = 0;
|
int CMeasureCPU::c_NumOfProcessors = 0;
|
||||||
ULONG CMeasureCPU::c_BufferSize = 0;
|
ULONG CMeasureCPU::c_BufferSize = 0;
|
||||||
|
|
||||||
@ -62,7 +61,8 @@ ULONG CMeasureCPU::c_BufferSize = 0;
|
|||||||
*/
|
*/
|
||||||
CMeasureCPU::CMeasureCPU(CMeterWindow* meterWindow, const WCHAR* name) : CMeasure(meterWindow, name),
|
CMeasureCPU::CMeasureCPU(CMeterWindow* meterWindow, const WCHAR* name) : CMeasure(meterWindow, name),
|
||||||
m_FirstTime(true),
|
m_FirstTime(true),
|
||||||
m_Processor()
|
m_Processor(),
|
||||||
|
m_OldTime()
|
||||||
{
|
{
|
||||||
m_MaxValue = 100.0;
|
m_MaxValue = 100.0;
|
||||||
|
|
||||||
@ -70,10 +70,6 @@ CMeasureCPU::CMeasureCPU(CMeterWindow* meterWindow, const WCHAR* name) : CMeasur
|
|||||||
{
|
{
|
||||||
c_NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(GetModuleHandle(L"ntdll"), "NtQuerySystemInformation");
|
c_NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(GetModuleHandle(L"ntdll"), "NtQuerySystemInformation");
|
||||||
}
|
}
|
||||||
if (c_GetSystemTimes == NULL)
|
|
||||||
{
|
|
||||||
c_GetSystemTimes = (PROCGST)GetProcAddress(GetModuleHandle(L"kernel32"), "GetSystemTimes");
|
|
||||||
}
|
|
||||||
if (c_NumOfProcessors == 0)
|
if (c_NumOfProcessors == 0)
|
||||||
{
|
{
|
||||||
SYSTEM_INFO systemInfo = {0};
|
SYSTEM_INFO systemInfo = {0};
|
||||||
@ -119,14 +115,7 @@ void CMeasureCPU::ReadConfig(CConfigParser& parser, const WCHAR* section)
|
|||||||
|
|
||||||
if (m_FirstTime)
|
if (m_FirstTime)
|
||||||
{
|
{
|
||||||
if (m_Processor == 0 && c_GetSystemTimes == NULL)
|
m_OldTime[0] = m_OldTime[1] = 0.0;
|
||||||
{
|
|
||||||
m_OldTime.assign(c_NumOfProcessors * 2, 0.0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_OldTime.assign(2, 0.0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,13 +129,13 @@ bool CMeasureCPU::Update()
|
|||||||
{
|
{
|
||||||
if (!CMeasure::PreUpdate()) return false;
|
if (!CMeasure::PreUpdate()) return false;
|
||||||
|
|
||||||
if (m_Processor == 0 && c_GetSystemTimes)
|
if (m_Processor == 0)
|
||||||
{
|
{
|
||||||
BOOL status;
|
BOOL status;
|
||||||
FILETIME ftIdleTime, ftKernelTime, ftUserTime;
|
FILETIME ftIdleTime, ftKernelTime, ftUserTime;
|
||||||
|
|
||||||
// get new CPU's idle/kernel/user time
|
// get new CPU's idle/kernel/user time
|
||||||
status = c_GetSystemTimes(&ftIdleTime, &ftKernelTime, &ftUserTime);
|
status = GetSystemTimes(&ftIdleTime, &ftKernelTime, &ftUserTime);
|
||||||
if (status == 0) return false;
|
if (status == 0) return false;
|
||||||
|
|
||||||
CalcUsage(Ft2Double(ftIdleTime),
|
CalcUsage(Ft2Double(ftIdleTime),
|
||||||
@ -212,17 +201,10 @@ bool CMeasureCPU::Update()
|
|||||||
|
|
||||||
SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION* systemPerfInfo = (SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION*)buf;
|
SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION* systemPerfInfo = (SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION*)buf;
|
||||||
|
|
||||||
if (m_Processor == 0)
|
int processor = m_Processor - 1;
|
||||||
{
|
|
||||||
CalcAverageUsage(systemPerfInfo);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int processor = m_Processor - 1;
|
|
||||||
|
|
||||||
CalcUsage(Li2Double(systemPerfInfo[processor].IdleTime),
|
CalcUsage(Li2Double(systemPerfInfo[processor].IdleTime),
|
||||||
Li2Double(systemPerfInfo[processor].KernelTime) + Li2Double(systemPerfInfo[processor].UserTime));
|
Li2Double(systemPerfInfo[processor].KernelTime) + Li2Double(systemPerfInfo[processor].UserTime));
|
||||||
}
|
|
||||||
|
|
||||||
delete [] buf;
|
delete [] buf;
|
||||||
}
|
}
|
||||||
@ -261,51 +243,3 @@ void CMeasureCPU::CalcUsage(double idleTime, double systemTime)
|
|||||||
m_OldTime[0] = idleTime;
|
m_OldTime[0] = idleTime;
|
||||||
m_OldTime[1] = systemTime;
|
m_OldTime[1] = systemTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
** CalcAverageUsage
|
|
||||||
**
|
|
||||||
** Calculates the current CPU average utilization value.
|
|
||||||
** This function is used if GetSystemTimes function is not available.
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
void CMeasureCPU::CalcAverageUsage(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION* systemPerfInfo)
|
|
||||||
{
|
|
||||||
if (!m_FirstTime)
|
|
||||||
{
|
|
||||||
double dbIdleTimeDiff = 0, dbSystemTimeDiff = 0;
|
|
||||||
double dbCpuUsage;
|
|
||||||
|
|
||||||
for (int i = 0; i < c_NumOfProcessors; ++i)
|
|
||||||
{
|
|
||||||
double dbIdleTime, dbSystemTime;
|
|
||||||
|
|
||||||
dbIdleTime = Li2Double(systemPerfInfo[i].IdleTime);
|
|
||||||
dbSystemTime = Li2Double(systemPerfInfo[i].KernelTime) + Li2Double(systemPerfInfo[i].UserTime);
|
|
||||||
|
|
||||||
dbIdleTimeDiff += dbIdleTime - m_OldTime[i * 2 + 0];
|
|
||||||
dbSystemTimeDiff += dbSystemTime - m_OldTime[i * 2 + 1];
|
|
||||||
|
|
||||||
// store new CPU's idle and system time
|
|
||||||
m_OldTime[i * 2 + 0] = dbIdleTime;
|
|
||||||
m_OldTime[i * 2 + 1] = dbSystemTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
// CurrentCpuUsage% = 100 - ((IdleTime / SystemTime) * 100)
|
|
||||||
dbCpuUsage = 100.0 - (dbIdleTimeDiff / dbSystemTimeDiff) * 100.0;
|
|
||||||
|
|
||||||
dbCpuUsage = min(dbCpuUsage, 100.0);
|
|
||||||
m_Value = max(dbCpuUsage, 0.0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// store new CPU's idle and system time
|
|
||||||
for (int i = 0; i < c_NumOfProcessors; ++i)
|
|
||||||
{
|
|
||||||
m_OldTime[i * 2 + 0] = Li2Double(systemPerfInfo[i].IdleTime);
|
|
||||||
m_OldTime[i * 2 + 1] = Li2Double(systemPerfInfo[i].KernelTime) + Li2Double(systemPerfInfo[i].UserTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_FirstTime = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -30,7 +30,6 @@ typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
|
|||||||
} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
|
} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
|
||||||
|
|
||||||
typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);
|
typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);
|
||||||
typedef BOOL (WINAPI *PROCGST)(LPFILETIME lpIdleTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime);
|
|
||||||
|
|
||||||
class CMeasureCPU : public CMeasure
|
class CMeasureCPU : public CMeasure
|
||||||
{
|
{
|
||||||
@ -49,10 +48,9 @@ protected:
|
|||||||
|
|
||||||
int m_Processor;
|
int m_Processor;
|
||||||
|
|
||||||
std::vector<double> m_OldTime;
|
double m_OldTime[2];
|
||||||
|
|
||||||
static PROCNTQSI c_NtQuerySystemInformation;
|
static PROCNTQSI c_NtQuerySystemInformation;
|
||||||
static PROCGST c_GetSystemTimes;
|
|
||||||
|
|
||||||
static int c_NumOfProcessors;
|
static int c_NumOfProcessors;
|
||||||
static ULONG c_BufferSize;
|
static ULONG c_BufferSize;
|
||||||
|
@ -192,7 +192,7 @@ void CMeasurePlugin::ReadConfig(CConfigParser& parser, const WCHAR* section)
|
|||||||
SetCurrentDirectory(dir.c_str());
|
SetCurrentDirectory(dir.c_str());
|
||||||
|
|
||||||
// Remove current directory from DLL search path
|
// Remove current directory from DLL search path
|
||||||
CSystem::RmSetDllDirectory(L"");
|
SetDllDirectory(L"");
|
||||||
|
|
||||||
double maxValue;
|
double maxValue;
|
||||||
maxValue = InitializeFunc(m_Plugin, parser.GetFilename().c_str(), section, m_ID);
|
maxValue = InitializeFunc(m_Plugin, parser.GetFilename().c_str(), section, m_ID);
|
||||||
|
@ -1668,12 +1668,6 @@ void CMeterWindow::ReadConfig()
|
|||||||
section = m_SkinName.c_str();
|
section = m_SkinName.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable native transparency if older OS
|
|
||||||
if (CSystem::GetOSPlatform() < OSPLATFORM_2K)
|
|
||||||
{
|
|
||||||
m_NativeTransparency = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set WindowXScreen/WindowYScreen temporarily
|
// Set WindowXScreen/WindowYScreen temporarily
|
||||||
WindowToScreen();
|
WindowToScreen();
|
||||||
}
|
}
|
||||||
|
@ -1021,13 +1021,9 @@ OSPLATFORM CSystem::GetOSPlatform()
|
|||||||
{
|
{
|
||||||
c_Platform = OSPLATFORM_2K;
|
c_Platform = OSPLATFORM_2K;
|
||||||
}
|
}
|
||||||
else if (osvi.dwMinorVersion == 1 && osvi.wServicePackMajor == 0)
|
|
||||||
{
|
|
||||||
c_Platform = OSPLATFORM_XP;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
c_Platform = OSPLATFORM_XP_SP1;
|
c_Platform = OSPLATFORM_XP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (osvi.dwMajorVersion == 6) // Vista (Server 2008) / 7 (Server 2008R2)
|
else if (osvi.dwMajorVersion == 6) // Vista (Server 2008) / 7 (Server 2008R2)
|
||||||
@ -1051,37 +1047,6 @@ OSPLATFORM CSystem::GetOSPlatform()
|
|||||||
return c_Platform;
|
return c_Platform;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
** RmSetDllDirectory
|
|
||||||
**
|
|
||||||
** This function is a wrapper function for SetDllDirectory() that is enabled on Windows XP sp1 or newer.
|
|
||||||
**
|
|
||||||
** Adds a directory to the search path used to locate DLLs for the application.
|
|
||||||
**
|
|
||||||
** If lpPathName is an empty string (""), the call removes the current directory from the default DLL search order.
|
|
||||||
** If lpPathName is NULL, the function restores the default search order.
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
BOOL CSystem::RmSetDllDirectory(LPCWSTR lpPathName)
|
|
||||||
{
|
|
||||||
if (GetOSPlatform() >= OSPLATFORM_XP_SP1)
|
|
||||||
{
|
|
||||||
static FPSETDLLDIRECTORYW c_SetDllDirectoryW = NULL;
|
|
||||||
|
|
||||||
if (!c_SetDllDirectoryW)
|
|
||||||
{
|
|
||||||
c_SetDllDirectoryW = (FPSETDLLDIRECTORYW)GetProcAddress(GetModuleHandle(L"Kernel32.dll"), "SetDllDirectoryW");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (c_SetDllDirectoryW)
|
|
||||||
{
|
|
||||||
return c_SetDllDirectoryW(lpPathName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** RmLoadLibrary
|
** RmLoadLibrary
|
||||||
**
|
**
|
||||||
@ -1092,9 +1057,6 @@ BOOL CSystem::RmSetDllDirectory(LPCWSTR lpPathName)
|
|||||||
*/
|
*/
|
||||||
HMODULE CSystem::RmLoadLibrary(LPCWSTR lpLibFileName, DWORD* dwError, bool ignoreErrors)
|
HMODULE CSystem::RmLoadLibrary(LPCWSTR lpLibFileName, DWORD* dwError, bool ignoreErrors)
|
||||||
{
|
{
|
||||||
OSPLATFORM platform = GetOSPlatform();
|
|
||||||
WCHAR buffer[MAX_PATH];
|
|
||||||
|
|
||||||
HMODULE hLib = NULL;
|
HMODULE hLib = NULL;
|
||||||
DWORD err;
|
DWORD err;
|
||||||
UINT oldMode;
|
UINT oldMode;
|
||||||
@ -1105,28 +1067,13 @@ HMODULE CSystem::RmLoadLibrary(LPCWSTR lpLibFileName, DWORD* dwError, bool ignor
|
|||||||
SetErrorMode(oldMode | SEM_FAILCRITICALERRORS); // Prevent the system from displaying message box
|
SetErrorMode(oldMode | SEM_FAILCRITICALERRORS); // Prevent the system from displaying message box
|
||||||
}
|
}
|
||||||
|
|
||||||
if (platform < OSPLATFORM_XP_SP1)
|
// Remove current directory from DLL search path
|
||||||
{
|
SetDllDirectory(L"");
|
||||||
// Replace current directory to application directory
|
|
||||||
GetCurrentDirectory(MAX_PATH, buffer);
|
|
||||||
SetCurrentDirectory(Rainmeter->GetPath().c_str());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Remove current directory from DLL search path
|
|
||||||
RmSetDllDirectory(L"");
|
|
||||||
}
|
|
||||||
|
|
||||||
SetLastError(ERROR_SUCCESS);
|
SetLastError(ERROR_SUCCESS);
|
||||||
hLib = LoadLibrary(lpLibFileName);
|
hLib = LoadLibrary(lpLibFileName);
|
||||||
err = GetLastError();
|
err = GetLastError();
|
||||||
|
|
||||||
if (platform < OSPLATFORM_XP_SP1)
|
|
||||||
{
|
|
||||||
// Reset to old current directory
|
|
||||||
SetCurrentDirectory(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ignoreErrors)
|
if (ignoreErrors)
|
||||||
{
|
{
|
||||||
SetErrorMode(oldMode); // Reset
|
SetErrorMode(oldMode); // Reset
|
||||||
|
@ -31,7 +31,6 @@ enum OSPLATFORM
|
|||||||
OSPLATFORM_NT4,
|
OSPLATFORM_NT4,
|
||||||
OSPLATFORM_2K,
|
OSPLATFORM_2K,
|
||||||
OSPLATFORM_XP,
|
OSPLATFORM_XP,
|
||||||
OSPLATFORM_XP_SP1,
|
|
||||||
OSPLATFORM_VISTA,
|
OSPLATFORM_VISTA,
|
||||||
OSPLATFORM_7
|
OSPLATFORM_7
|
||||||
};
|
};
|
||||||
@ -76,10 +75,8 @@ public:
|
|||||||
static HWND GetHelperWindow() { return c_HelperWindow; }
|
static HWND GetHelperWindow() { return c_HelperWindow; }
|
||||||
static void PrepareHelperWindow(HWND WorkerW);
|
static void PrepareHelperWindow(HWND WorkerW);
|
||||||
|
|
||||||
static bool IsNT() { return (GetOSPlatform() >= OSPLATFORM_NT4); }
|
|
||||||
static OSPLATFORM GetOSPlatform();
|
static OSPLATFORM GetOSPlatform();
|
||||||
|
|
||||||
static BOOL RmSetDllDirectory(LPCWSTR lpPathName);
|
|
||||||
static HMODULE RmLoadLibrary(LPCWSTR lpLibFileName, DWORD* dwError = NULL, bool ignoreErrors = false);
|
static HMODULE RmLoadLibrary(LPCWSTR lpLibFileName, DWORD* dwError = NULL, bool ignoreErrors = false);
|
||||||
|
|
||||||
static bool CopyFiles(const std::wstring& strFrom, const std::wstring& strTo, bool bMove = false);
|
static bool CopyFiles(const std::wstring& strFrom, const std::wstring& strTo, bool bMove = false);
|
||||||
|
@ -111,35 +111,24 @@ double Update2(UINT id)
|
|||||||
|
|
||||||
if(measure)
|
if(measure)
|
||||||
{
|
{
|
||||||
// Check the platform
|
ULONGLONG longvalue;
|
||||||
OSVERSIONINFO osvi;
|
longvalue = GetPerfData(measure->ObjectName.c_str(),
|
||||||
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
|
measure->InstanceName.c_str(),
|
||||||
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
measure->CounterName.c_str());
|
||||||
if(GetVersionEx((OSVERSIONINFO*)&osvi) && osvi.dwPlatformId == VER_PLATFORM_WIN32_NT && osvi.dwMajorVersion > 4)
|
|
||||||
{
|
|
||||||
ULONGLONG longvalue = 0;
|
|
||||||
longvalue = GetPerfData(measure->ObjectName.c_str(),
|
|
||||||
measure->InstanceName.c_str(),
|
|
||||||
measure->CounterName.c_str());
|
|
||||||
|
|
||||||
if(measure->Difference)
|
if(measure->Difference)
|
||||||
|
{
|
||||||
|
// Compare with the old value
|
||||||
|
if(!measure->FirstTime)
|
||||||
{
|
{
|
||||||
// Compare with the old value
|
value = (double)(longvalue - measure->OldValue);
|
||||||
if(!measure->FirstTime)
|
|
||||||
{
|
|
||||||
value = (double)(longvalue - measure->OldValue);
|
|
||||||
}
|
|
||||||
measure->OldValue = longvalue;
|
|
||||||
measure->FirstTime = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
value = (double)longvalue;
|
|
||||||
}
|
}
|
||||||
|
measure->OldValue = longvalue;
|
||||||
|
measure->FirstTime = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LSLog(LOG_NOTICE, L"Rainmeter", L"PerfMon plugin works only in Win2K and later.");
|
value = (double)longvalue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -611,17 +611,7 @@ void GetOSVersion(WCHAR* buffer)
|
|||||||
void GetOSBits(WCHAR* buffer)
|
void GetOSBits(WCHAR* buffer)
|
||||||
{
|
{
|
||||||
SYSTEM_INFO systemInfo = {0};
|
SYSTEM_INFO systemInfo = {0};
|
||||||
|
GetNativeSystemInfo(&systemInfo);
|
||||||
typedef void (WINAPI *FPGETNATIVESYSTEMINFO)(LPSYSTEM_INFO lpSystemInfo);
|
|
||||||
FPGETNATIVESYSTEMINFO GetNativeSystemInfo = (FPGETNATIVESYSTEMINFO)GetProcAddress(GetModuleHandle(L"kernel32"), "GetNativeSystemInfo");
|
|
||||||
if (GetNativeSystemInfo != NULL)
|
|
||||||
{
|
|
||||||
GetNativeSystemInfo(&systemInfo);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GetSystemInfo(&systemInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||
|
if (systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||
|
||||||
systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64)
|
systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user