Author: gedmurphy
Date: Tue Oct 3 03:35:43 2006
New Revision: 24372
URL:
http://svn.reactos.org/svn/reactos?rev=24372&view=rev
Log:
set processor information in the sysdm control panel applet
Modified:
trunk/reactos/dll/cpl/sysdm/general.c
Modified: trunk/reactos/dll/cpl/sysdm/general.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/sysdm/general.c?re…
==============================================================================
--- trunk/reactos/dll/cpl/sysdm/general.c (original)
+++ trunk/reactos/dll/cpl/sysdm/general.c Tue Oct 3 03:35:43 2006
@@ -71,30 +71,136 @@
static VOID
+SetRegTextData(HWND hwnd,
+ HKEY hKey,
+ LPTSTR Value,
+ UINT uID)
+{
+ LPTSTR lpBuf = NULL;
+ DWORD BufSize = 0;
+ DWORD Type;
+
+ if (RegQueryValueEx(hKey,
+ Value,
+ NULL,
+ &Type,
+ NULL,
+ &BufSize) == ERROR_SUCCESS)
+ {
+ lpBuf = HeapAlloc(GetProcessHeap(),
+ 0,
+ BufSize);
+ if (!lpBuf) return;
+
+ if (RegQueryValueEx(hKey,
+ Value,
+ NULL,
+ &Type,
+ (PBYTE)lpBuf,
+ &BufSize) == ERROR_SUCCESS)
+ {
+ SetDlgItemText(hwnd,
+ uID,
+ lpBuf);
+ }
+
+ HeapFree(GetProcessHeap(),
+ 0,
+ lpBuf);
+ }
+}
+
+static VOID
+SetProcSpeed(HWND hwnd,
+ HKEY hKey,
+ LPTSTR Value,
+ UINT uID)
+
+{
+ TCHAR szBuf[64];
+ DWORD dwBuf;
+ DWORD BufSize = sizeof(DWORD);
+ DWORD Type = REG_SZ;
+
+ if (RegQueryValueEx(hKey,
+ Value,
+ NULL,
+ &Type,
+ (PBYTE)&dwBuf,
+ &BufSize) == ERROR_SUCCESS)
+ {
+ if (dwBuf < 1000)
+ {
+ wsprintf(szBuf, _T("%lu MHz"), dwBuf);
+ }
+ else
+ {
+ double flt = dwBuf / 1000.0;
+ wsprintf(szBuf, _T("%l GHz"), flt);
+ }
+
+ SetDlgItemText(hwnd,
+ uID,
+ szBuf);
+ }
+}
+
+
+static VOID
GetSystemInformation(HWND hwnd)
{
+ HKEY hKey;
+ TCHAR ProcKey[] =
_T("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0");
MEMORYSTATUS MemStat;
TCHAR Buf[32];
INT Ret = 0;
+
+
+
+ /* Get Processor information *
+ * although undocumented, this information is being pulled
+ * directly out of the registry instead of via setupapi as it
+ * contains all the info we need, and should remain static
+ */
+ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ ProcKey,
+ 0,
+ KEY_READ,
+ &hKey) == ERROR_SUCCESS)
+ {
+ SetRegTextData(hwnd,
+ hKey,
+ _T("VendorIdentifier"),
+ IDC_PROCESSORMANUFACTURER);
+
+ SetRegTextData(hwnd,
+ hKey,
+ _T("ProcessorNameString"),
+ IDC_PROCESSOR);
+
+ SetProcSpeed(hwnd,
+ hKey,
+ _T("~MHz"),
+ IDC_PROCESSORSPEED);
+ }
+
/* Get total physical RAM */
MemStat.dwLength = sizeof(MemStat);
GlobalMemoryStatus(&MemStat);
if (MemStat.dwTotalPhys < KB_DIV)
- Ret = wsprintf(Buf, _T("%luKB of RAM"), MemStat.dwTotalPhys/1024);
+ Ret = wsprintf(Buf, _T("%luKB of RAM"), MemStat.dwTotalPhys/KB_DIV);
else if (MemStat.dwTotalPhys >= KB_DIV && MemStat.dwTotalPhys <
GB_DIV)
- Ret = wsprintf(Buf, _T("%luMB of RAM"), MemStat.dwTotalPhys/1048576);
+ Ret = wsprintf(Buf, _T("%luMB of RAM"), MemStat.dwTotalPhys/MB_DIV);
else if (MemStat.dwTotalPhys > GB_DIV)
- Ret = wsprintf(Buf, _T("%luGB of RAM"),
MemStat.dwTotalPhys/1073741824);
+ Ret = wsprintf(Buf, _T("%luGB of RAM"), MemStat.dwTotalPhys/GB_DIV);
if (Ret)
{
- SendDlgItemMessage(hwnd,
- IDC_SYSTEMMEMORY,
- WM_SETTEXT,
- 0,
- (LPARAM)Buf);
+ SetDlgItemText(hwnd,
+ IDC_SYSTEMMEMORY,
+ Buf);
}
}