Познавательный блог Мобильная врсия

Страницы

Промо

Определение частоты процессора на C++

Для определения частоты процессора используем ASM вставку. Частота рассчитывается реальная, а не та, что на системнике наклеена.

Строку для хранения частоты мы создаем как указатель char *n, чтобы потом можно было создать по этому адресу строку.

#pragma hdrstop
#pragma argsused
#include <windows.h>
#include <stdio.h>

double CPUSpeed(void);

DoubleToChar
int main(int argc, char* argv[])
{
char *n;
CharToOem("Частота процессора = ",n);
printf("%s%f Mhz",n,CPUSpeed());
getchar();
return 0;
}

double CPUSpeed(void)
{
DWORD dwTimerHi, dwTimerLo;
double dRes;
asm
{
DW 0x310F
mov dwTimerLo, EAX
mov dwTimerHi, EDX
}
Sleep (500);
asm
{
DW 0x310F
sub EAX, dwTimerLo
sub EAX, dwTimerHi
mov dwTimerLo, EAX
mov dwTimerHi, EDX
}
dRes = dwTimerLo/(1000.0*500);
return dRes;
}

*Функция CharToOem преобразует строку в набор символов ОЕМ. Эта функция заменяет функцию AnsiToOem .

BOOL CharToOem (

LPCTSTR lpszSrc , // указатель на преобразуемую строку
LPSTR lpszDst // указатель на буфер для преобразованной строки
);

Параметры

lpszSrc - указывает на завершающуюся нулем преобразуемую строку.
lpszDst - указывает на буфер для преобразованной строки. Если CharToOem используется как ANSI -функция, то можно установить параметр lpszDst на тот же адрес, что и параметр lpszSrc . Это не может быть осуществлено в случае использования CharToOem как Unicode -функции.

Написать комментарий








Поиск по сайту

Статистика

Мета

  Разработка и дизайн — StvPromo.ru