CPU Frequency w C++ - Rozwiązane
Po długich walkach z Windowsem udało mi się dokopać do kodu, który rozwiązywał mój problem.
int GetCPUSpeed()
{
const
DelayTime = 500;
DWORD TimerHi, TimerLo;
int PriorityClass, Priority;
PriorityClass = GetPriorityClass(GetCurrentProcess);
Priority = GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);
asm
{
dw 310Fh
mov TimerLo, eax
mov TimerHi, edx
}
Sleep(DelayTime);
asm
{
dw 310Fh
sub eax, TimerLo
sbb edx, TimerHi
mov TimerLo, eax
mov TimerHi, edx
}
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
return TimerLo / (1000 * DelayTime);
}
Kod działał idealnie, kiedy kompilowałem go w Dev-C++, ale miał problemy w C++ Builderze. Kompilacja przechodziła bez problemu, lecz program się wywalał pokazując ładny komunikat z błędem pamięci w adresie. Wystarczyło w opcjach projektu, zakładka Compiler zaznaczyć opcję Stack frames. I wszystko byłoby pięknie, gdyby nie Avast.
Kiedy wysyłałem binarkę koledze, by sprawdził działanie aplikacji, antywirus stwierdził, że aplikacja zawiera szkodliwy kod. Ciekawe ;-)
18 września 2007, 18:58:21
Powered by Jogger. Copyright © 2002-2003 Justin Mecham & JabberPL Group
Licencja: Creative Commons Uznanie autorstwa 3.0




