Initial Commit
This commit is contained in:
266
database/FileZillaFTP/source/misc/ProcessorInfo.h
Normal file
266
database/FileZillaFTP/source/misc/ProcessorInfo.h
Normal file
@@ -0,0 +1,266 @@
|
||||
#ifndef PROCESSORINFO_H
|
||||
#define PROCESSORINFO_H
|
||||
|
||||
class CProcessorInfo
|
||||
{
|
||||
protected:
|
||||
|
||||
SYSTEM_INFO m_sysInfo;
|
||||
|
||||
public:
|
||||
CProcessorInfo(void)
|
||||
{
|
||||
::GetSystemInfo(&m_sysInfo);
|
||||
}
|
||||
|
||||
virtual ~CProcessorInfo(void)
|
||||
{
|
||||
}
|
||||
|
||||
CStdString GetProcessorName(void)
|
||||
{
|
||||
CStdString sRC;
|
||||
|
||||
CStdString sSpeed;
|
||||
CStdString sVendor;
|
||||
|
||||
// Get the processor speed info.
|
||||
HKEY hKey;
|
||||
LONG result = ::RegOpenKeyEx (HKEY_LOCAL_MACHINE, _T("Hardware\\Description\\System\\CentralProcessor\\0"), 0, KEY_QUERY_VALUE, &hKey);
|
||||
|
||||
// Check if the function has succeeded.
|
||||
if (result == ERROR_SUCCESS)
|
||||
{
|
||||
DWORD data;
|
||||
DWORD dataSize = sizeof(data);
|
||||
result = ::RegQueryValueEx (hKey, _T("~MHz"), NULL, NULL, (LPBYTE)&data, &dataSize);
|
||||
|
||||
if (result == ERROR_SUCCESS)
|
||||
{
|
||||
sSpeed.Format ( _T("Speed: %dMHz "), data);
|
||||
}
|
||||
else
|
||||
{
|
||||
sSpeed = _T("Speed: Unknown ");
|
||||
}
|
||||
|
||||
TCHAR vendorData [64];
|
||||
dataSize = sizeof (vendorData);
|
||||
|
||||
result = ::RegQueryValueEx (hKey, _T("VendorIdentifier"), NULL, NULL, (LPBYTE)vendorData, &dataSize);
|
||||
|
||||
if (result == ERROR_SUCCESS)
|
||||
{
|
||||
sVendor.Format ( _T("Vendor: %s "), vendorData);
|
||||
}
|
||||
else
|
||||
{
|
||||
sVendor = _T("Vendor: Unknown ");
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure to close the reg key
|
||||
RegCloseKey (hKey);
|
||||
|
||||
CStdString sType;
|
||||
switch (m_sysInfo.dwProcessorType)
|
||||
{
|
||||
case PROCESSOR_INTEL_386:
|
||||
sType = _T("Type: Intel 386 ");
|
||||
break;
|
||||
case PROCESSOR_INTEL_486:
|
||||
sType = _T("Type: Intel 486 ");
|
||||
break;
|
||||
case PROCESSOR_INTEL_PENTIUM:
|
||||
sType = _T("Type: Intel Pentium compatible");
|
||||
break;
|
||||
case PROCESSOR_MIPS_R4000:
|
||||
sType = _T("Type: MIPS ");
|
||||
break;
|
||||
case PROCESSOR_ALPHA_21064:
|
||||
sType = _T("Type: Alpha ");
|
||||
break;
|
||||
default:
|
||||
sType = _T("Type: Unknown ");
|
||||
break;
|
||||
}
|
||||
|
||||
CStdString sProcessors;
|
||||
sProcessors.Format( _T("Number Of Processors: %lu "), m_sysInfo.dwNumberOfProcessors);
|
||||
|
||||
CStdString sArchitecture;
|
||||
CStdString sProcessorLevel;
|
||||
CStdString sStepping;
|
||||
|
||||
switch(m_sysInfo.wProcessorArchitecture)
|
||||
{
|
||||
case PROCESSOR_ARCHITECTURE_INTEL:
|
||||
sArchitecture = _T("Architecture: Intel ");
|
||||
switch (m_sysInfo.wProcessorLevel)
|
||||
{
|
||||
case 3:
|
||||
sProcessorLevel = _T("Level: 80386");
|
||||
{
|
||||
int iSteppingLevel = m_sysInfo.wProcessorRevision / 100;
|
||||
int iStepping = m_sysInfo.wProcessorRevision % 100;
|
||||
sStepping.Format( _T("Stepping: %c%u "), iSteppingLevel, iStepping);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
sProcessorLevel = _T("Level: 80486");
|
||||
{
|
||||
int iSteppingLevel = m_sysInfo.wProcessorRevision / 100;
|
||||
int iStepping = m_sysInfo.wProcessorRevision % 100;
|
||||
sStepping.Format( _T("Stepping: %c%u "), iSteppingLevel, iStepping);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
sProcessorLevel = _T("Level: Pentium");
|
||||
{
|
||||
typedef BOOL (*PIPFP)(DWORD);
|
||||
PIPFP lpfn = (PIPFP)::GetProcAddress(GetModuleHandle( _T("kernel32.dll") ), "IsProcessorFeaturePresentA");
|
||||
if (lpfn)
|
||||
{
|
||||
if ((lpfn)(PF_MMX_INSTRUCTIONS_AVAILABLE))
|
||||
{
|
||||
sProcessorLevel += _T (" MMX");
|
||||
}
|
||||
}
|
||||
|
||||
int iModel = m_sysInfo.wProcessorRevision / 100;
|
||||
int iStepping = m_sysInfo.wProcessorRevision % 100;
|
||||
sStepping.Format( _T("Stepping: %u-%u "), iModel, iStepping);
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
sProcessorLevel = _T("Level: Pentium II/Pro");
|
||||
{
|
||||
int iModel = m_sysInfo.wProcessorRevision / 100;
|
||||
int iStepping = m_sysInfo.wProcessorRevision % 100;
|
||||
sStepping.Format( _T("Stepping: %u-%u "), iModel, iStepping);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
sProcessorLevel.Format( _T("Level: Unknown %u "), m_sysInfo.wProcessorLevel);
|
||||
{
|
||||
int iModel = m_sysInfo.wProcessorRevision / 100;
|
||||
int iStepping = m_sysInfo.wProcessorRevision % 100;
|
||||
sStepping.Format( _T("Stepping: %u-%u "), iModel, iStepping);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case PROCESSOR_ARCHITECTURE_MIPS:
|
||||
sArchitecture = "Architecture: MIPS ";
|
||||
switch(m_sysInfo.wProcessorLevel)
|
||||
{
|
||||
case 0004:
|
||||
sProcessorLevel = "Level: R4000 ";
|
||||
break;
|
||||
default:
|
||||
sProcessorLevel.Format( _T("Level: Unknown %u "), m_sysInfo.wProcessorLevel);
|
||||
break;
|
||||
}
|
||||
sStepping.Format( _T("Stepping: 00%u"), m_sysInfo.wProcessorRevision);
|
||||
break;
|
||||
case PROCESSOR_ARCHITECTURE_ALPHA:
|
||||
sArchitecture = "Architecture: Alpha ";
|
||||
sProcessorLevel.Format( _T("Level: %u "), m_sysInfo.wProcessorLevel);
|
||||
{
|
||||
int iModel = m_sysInfo.wProcessorRevision / 100;
|
||||
int iStepping = m_sysInfo.wProcessorRevision % 100;
|
||||
sStepping.Format( _T("Stepping: %c%u "), iModel, iStepping);
|
||||
}
|
||||
break;
|
||||
case PROCESSOR_ARCHITECTURE_PPC:
|
||||
sArchitecture = _T("Architecture: PowerPC ");
|
||||
switch(m_sysInfo.wProcessorLevel)
|
||||
{
|
||||
case 1:
|
||||
sProcessorLevel = _T("Level: 601 ");
|
||||
break;
|
||||
case 3:
|
||||
sProcessorLevel = _T("Level: 603 ");
|
||||
break;
|
||||
case 4:
|
||||
sProcessorLevel = _T("Level: 604 ");
|
||||
break;
|
||||
case 6:
|
||||
sProcessorLevel = _T("Level: 603+ ");
|
||||
break;
|
||||
case 9:
|
||||
sProcessorLevel = _T("Level: 604+ ");
|
||||
break;
|
||||
case 20:
|
||||
sProcessorLevel = _T("Level: 620 ");
|
||||
break;
|
||||
default:
|
||||
sProcessorLevel.Format( _T("Level: Unknown %u "), m_sysInfo.wProcessorLevel);
|
||||
break;
|
||||
}
|
||||
{
|
||||
int iModel = m_sysInfo.wProcessorRevision / 100;
|
||||
int iStepping = m_sysInfo.wProcessorRevision % 100;
|
||||
sStepping.Format( _T("Stepping: %u.%u "), iModel, iStepping);
|
||||
}
|
||||
break;
|
||||
case PROCESSOR_ARCHITECTURE_UNKNOWN:
|
||||
sArchitecture = "Architecture: Unknown ";
|
||||
sProcessorLevel.Format( _T("Level: Unknown %u "), m_sysInfo.wProcessorLevel);
|
||||
{
|
||||
int iModel = m_sysInfo.wProcessorRevision / 100;
|
||||
int iStepping = m_sysInfo.wProcessorRevision % 100;
|
||||
sStepping.Format( _T("Stepping: %u-%u "), iModel, iStepping);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
sArchitecture.Format( _T("Architecture: Unknown %u "), m_sysInfo.wProcessorArchitecture);
|
||||
sProcessorLevel.Format( _T("Level: Unknown %u "), m_sysInfo.wProcessorLevel);
|
||||
{
|
||||
int iModel = m_sysInfo.wProcessorRevision / 100;
|
||||
int iStepping = m_sysInfo.wProcessorRevision % 100;
|
||||
sStepping.Format( _T("Stepping: %u-%u "), iModel, iStepping);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
sRC = sVendor + "," + sSpeed + "," + sType + "," + sProcessors + "," + sArchitecture + "," + sProcessorLevel + "," + sStepping;
|
||||
|
||||
return sRC;
|
||||
}
|
||||
};
|
||||
|
||||
class CMemoryInfo
|
||||
{
|
||||
protected:
|
||||
|
||||
public:
|
||||
|
||||
CMemoryInfo(void)
|
||||
{
|
||||
}
|
||||
|
||||
CStdString GetMemoryInfo(void)
|
||||
{
|
||||
CStdString sRC;
|
||||
|
||||
MEMORYSTATUS memoryStatus;
|
||||
|
||||
memset (&memoryStatus, 0, sizeof(MEMORYSTATUS));
|
||||
memoryStatus.dwLength = sizeof (MEMORYSTATUS);
|
||||
GlobalMemoryStatus (&memoryStatus);
|
||||
|
||||
DWORD dwMinWSSize;
|
||||
DWORD dwMaxWSSize;
|
||||
|
||||
::GetProcessWorkingSetSize(GetCurrentProcess(), &dwMinWSSize, &dwMaxWSSize);
|
||||
|
||||
sRC.Format( _T("Memory Used %lu%%, Total Physical Memory %luKB, Physical Memory Available %luKB, Total Virtual Memory %luKB, Available Virtual Memory %luKB, Working Set Min : %luKB Max : %luKB .\r\n"), memoryStatus.dwMemoryLoad, memoryStatus.dwTotalPhys / 1024, memoryStatus.dwAvailPhys / 1024, memoryStatus.dwTotalVirtual / 1024, memoryStatus.dwAvailVirtual / 1024, dwMinWSSize/1024, dwMaxWSSize/1024);
|
||||
|
||||
return sRC;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user