From 447e15240efc5b3f630fd3f84a17485e4c30928e Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sat, 21 Apr 2007 19:37:11 +0000 Subject: [PATCH] Display current CPU speed svn path=/trunk/; revision=26454 --- reactos/dll/cpl/cpl.rbuild | 3 +++ reactos/dll/cpl/sysdm/general.c | 21 +++++++++++++++------ reactos/dll/cpl/sysdm/precomp.h | 4 ++++ reactos/include/psdk/winnt.h | 11 +++++++++++ 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/reactos/dll/cpl/cpl.rbuild b/reactos/dll/cpl/cpl.rbuild index a02e9c6a5ab..90af08b7f8b 100644 --- a/reactos/dll/cpl/cpl.rbuild +++ b/reactos/dll/cpl/cpl.rbuild @@ -25,6 +25,9 @@ + + + diff --git a/reactos/dll/cpl/sysdm/general.c b/reactos/dll/cpl/sysdm/general.c index bbb3b25f120..7e2eb8632a3 100644 --- a/reactos/dll/cpl/sysdm/general.c +++ b/reactos/dll/cpl/sysdm/general.c @@ -205,24 +205,33 @@ SetProcSpeed(HWND hwnd, { TCHAR szBuf[64]; - DWORD dwBuf; DWORD BufSize = sizeof(DWORD); DWORD Type = REG_SZ; + PROCESSOR_POWER_INFORMATION ppi; - if (RegQueryValueEx(hKey, + ZeroMemory(&ppi, + sizeof(ppi)); + + if ((CallNtPowerInformation(ProcessorInformation, + NULL, + 0, + (PVOID)&ppi, + sizeof(ppi)) == STATUS_SUCCESS && + ppi.CurrentMhz != 0) || + RegQueryValueEx(hKey, Value, NULL, &Type, - (PBYTE)&dwBuf, + (PBYTE)&ppi.CurrentMhz, &BufSize) == ERROR_SUCCESS) { - if (dwBuf < 1000) + if (ppi.CurrentMhz < 1000) { - _stprintf(szBuf, _T("%.2f MHz"), dwBuf); + _stprintf(szBuf, _T("%lu MHz"), ppi.CurrentMhz); } else { - double flt = dwBuf / 1000.0; + double flt = ppi.CurrentMhz / 1000.0; _stprintf(szBuf, _T("%.2f GHz"), flt); } diff --git a/reactos/dll/cpl/sysdm/precomp.h b/reactos/dll/cpl/sysdm/precomp.h index ff8a12a04f9..13ca9c2c26e 100644 --- a/reactos/dll/cpl/sysdm/precomp.h +++ b/reactos/dll/cpl/sysdm/precomp.h @@ -1,8 +1,12 @@ #ifndef __CPL_PRECOMP_H #define __CPL_PRECOMP_H +#include +#define WIN32_NO_STATUS +#include #include #include +#include #include #include #include diff --git a/reactos/include/psdk/winnt.h b/reactos/include/psdk/winnt.h index f0810ca1516..6bc1a7fcab0 100644 --- a/reactos/include/psdk/winnt.h +++ b/reactos/include/psdk/winnt.h @@ -3667,6 +3667,17 @@ typedef struct _SYSTEM_BATTERY_STATE { ULONG DefaultAlert2; } SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE; +#ifndef __NTDDK_H /* HACK!!! ntddk.h shouldn't include winnt.h! */ +typedef struct _PROCESSOR_POWER_INFORMATION { + ULONG Number; + ULONG MaxMhz; + ULONG CurrentMhz; + ULONG MhzLimit; + ULONG MaxIdleState; + ULONG CurrentIdleState; +} PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION; +#endif + typedef DWORD EXECUTION_STATE; typedef enum _POWER_INFORMATION_LEVEL { SystemPowerPolicyAc,