Sl@Sh |
Отправлено: 04.09.2004, 11:41 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
Уважаемые коллеги! Кто знает как програмно узнать о процессоре как можно больше информации. Например текущую температуру, предельную температуру и.т.п. Инфа, которая в реестре меня не устраивает, я хочу знать технические характеристики.
Заранее спасибо!!!
|
|
Хлор |
Отправлено: 06.09.2004, 01:23 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 78
|
Из биоса можно получить.
Отредактировано Хлор — 06/09/2004, 02:46
|
|
Konstantine |
Отправлено: 06.09.2004, 08:49 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
А как?
|
|
Sl@Sh |
Отправлено: 06.09.2004, 18:23 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
Да, меня тоже интересует "как" ? Может кто не понял, но я хочу знать как это реализовать на С++. Я видел кучу прог, которые "знают" всё о процессоре, и меня интересует как такие проги устроены, или проще говоря как написаны.
|
|
Георгий |
Отправлено: 06.09.2004, 21:51 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
большинство этих "супер" прог банально раршифровывают значение возвращаемое инструкцией CPUID
максимум температуры и энергопортебления обычно берётся из таблиц, заранее зашитых в прогу.
текущая температура — это уже через чтение диагностических регистров чипсета (но этим никогда не запимался, поэтому более подробно рассказать не могу)
Отредактировано Георгий — 06/09/2004, 22:56 |
|
Хлор |
Отправлено: 06.09.2004, 22:20 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 78
|
Посмотрите прогу SpeedFan. Она определяет на каких регистрах весят темп датчики и прочая мишура
А так считать данные из бивиса, пока ищу, где-то у меня было.
Могу выложить коды на асме для определения модели и тактовой частоты если кому надо, через возвращаемые инструкции
|
|
AVC |
Отправлено: 07.09.2004, 09:49 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Вот когда то Dima давал ссылку
CODE |
// Pentium III serial detection
// Console mode Win32 program which uses VCL
// Borland C++Builder 4 and 5 PRO
// Hens Zimmerman, <hens@gmx.net>
// Suppress W8002 (Restarting compile using assembly)
#pragma option -w-asc
// Enable streaming operators for AnsiString
#define VCL_IOSTREAM
#include <vcl.h>
#pragma hdrstop
#include <iostream>
int main(){
unsigned long FeatureFlags;
unsigned long SerialMostSignificantBits;
unsigned long SerialMiddleSignificantBits;
unsigned long SerialLeastSignificantBits;
asm mov eax, 1;
// Hardcoded CPUID instruction
__emit__(0x0f);
__emit__(0xa2);
asm{
mov FeatureFlags, edx
mov SerialMostSignificantBits, eax
mov eax, 3
}
// Hardcoded CPUID instruction
__emit__(0x0f);
__emit__(0xa2);
asm{
mov SerialMiddleSignificantBits, edx
mov SerialLeastSignificantBits, ecx
}
// Is serial number enabled?
bool SerialEnabled = (FeatureFlags & 0x40000);
if(SerialEnabled){
AnsiString Information;
Information.sprintf(
"Feature flags: %X\nSerial: %.08X%.08X%.08X",
FeatureFlags,
SerialMostSignificantBits,
SerialMiddleSignificantBits,
SerialLeastSignificantBits
);
std::cout << Information << std::endl;
}
else
std::cout << "Serial number not available" << std::endl;
return 0;
}
| |
|