

Як замірити температуру процесору?
Автор Іґор, 16.06.2008 – 03:39
#1
Відправлено 16.06.2008 – 03:39
Доводилось багато проґуґлити, облазити форумів у пошуках рецептів проведення заміру температури процесору. Жодної якої небудь корисної інформації по цьому питанню не знайшов, ставив питання на просунутих форумах
http://www.gotdotnet...mon/558838.aspx
Хоча от знаю, якось таки усеж це можна зробити. Взяти хоча б програму HWMonitor, що широко вживається оверклокерами при експериментах з розгону процесору
http://www.cpuid.com...Monitor_109.zip
Може ви маєте якісь здогадки, як це непристойне діло робиться?
http://www.gotdotnet...mon/558838.aspx
Хоча от знаю, якось таки усеж це можна зробити. Взяти хоча б програму HWMonitor, що широко вживається оверклокерами при експериментах з розгону процесору
http://www.cpuid.com...Monitor_109.zip
Може ви маєте якісь здогадки, як це непристойне діло робиться?
#3
Відправлено 16.06.2008 – 10:51
Як же я люблю за когось гуглити а потім з серйозним виглядом лиця бадяжити великі розумні повідомлення
Спробуйте варіант, описаний тутечки. А саме:
Але в мене (і не тільки) Windows Management Instrumentation Tester показав що я не зможу взнати температуру методами WMI
Відповідно жоден з наступних лістів не працює(не проходить select * from ХХХ, можливо у Вас пройде)
Про Win32_TemperatureProbe Class можна прочитати на MSDNі
Ото ж, залишаєтсья два варіанти:

Спробуйте варіант, описаний тутечки. А саме:
Цитата
You can use WMI if your hardware is compliant. Use the wbemtest.exe
utility to confirm whether or not you can even retrieve the
temperature. There are two ways I know of to retrieve the temperature
information.
1) Using wbemtest.exe connect to the namespace "root\cimv2" (without
quotes). Click the Query button and enter "select * from
Win32_TemperatureProbe". Double click on any result you get back and
look for the CurrentReading property in the properties section. The
value you see there should be the temperature. If it just shows
"<null>" then this option will not work.
2) Using wbemtest.ext connect to the namespace "root\WMI". Enter the
query "select * from MSAcpi_ThermalZoneTemperature". Double click on
any result you get back and look for the CurrentTemperature property.
The value is in tenths of degrees Kelvin.
utility to confirm whether or not you can even retrieve the
temperature. There are two ways I know of to retrieve the temperature
information.
1) Using wbemtest.exe connect to the namespace "root\cimv2" (without
quotes). Click the Query button and enter "select * from
Win32_TemperatureProbe". Double click on any result you get back and
look for the CurrentReading property in the properties section. The
value you see there should be the temperature. If it just shows
"<null>" then this option will not work.
2) Using wbemtest.ext connect to the namespace "root\WMI". Enter the
query "select * from MSAcpi_ThermalZoneTemperature". Double click on
any result you get back and look for the CurrentTemperature property.
The value is in tenths of degrees Kelvin.
Але в мене (і не тільки) Windows Management Instrumentation Tester показав що я не зможу взнати температуру методами WMI

string scope = @"root\WMI"; string query = @"select * from MSAcpi_ThermalZoneTemperature"; ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); foreach (ManagementObject obj in searcher.Get()) { Console.WriteLine(obj.Properties["CurrentTemperature"].Value); }
ManagementObjectSearcher searcher = new ManagementObjectSearcher ("SELECT * FROM Win32_TemperatureProbe"); foreach (ManagementObject service in searcher.Get()) Console.WriteLine("Service = " + service["Caption"]);(Не забути підєднати System.Management неймспейс і референс)
Про Win32_TemperatureProbe Class можна прочитати на MSDNі
Ото ж, залишаєтсья два варіанти:
- Підлаштовуватись під кожного виробника материнських плат і використовувати їх бібліотеки
- Асемблер
#4
Відправлено 16.06.2008 – 11:24
Аналогічно... Температуру не міряє... Писав... Те WMI трохи косолапе... В будь якому випадку на процесорі повинні бути датчики температури... Але вони зараз є майже на всіх процессорах... Імхо треба юзати асемблер...
Весь флуд видалив я Lactarius (aka Ivan Metal!)
Весь флуд видалив я Lactarius (aka Ivan Metal!)
#5
Відправлено 16.06.2008 – 23:49
Узагалі-то BIOS'ом... але можна й купою різноманітних програмоґ. Дивно, що пан нічого не знашов.
ОЯК пан Псіна порадив справно.

Сварус (16.06.2008 11:51) писав:
Відповідно жоден з наступних лістів не працює(не проходить select * from ХХХ, можливо у Вас пройде)
І в мене непроходить.
Отож наґуґлив був також посилань на форуми співтовариств розробників. Така тема не раз ставилась, усі руками розводять та переводять стріли на Microsoft, перепосилаючи до MSDN
Lactarius (aka Ivan Metal!) (16.06.2008 12:24) писав:
Аналогічно... Температуру не міряє... Писав... Те WMI трохи косолапе... В будь якому випадку на процесорі повинні бути датчики температури... Але вони зараз є майже на всіх процессорах... Імхо треба юзати асемблер...
Не розумію, чому тоді клас цей є у WMI? А шо ж я асемблером напишу, коли це - лише одна (звісно бажана) функція моєї програми.
#6
Відправлено 17.06.2008 – 22:25
Цитата
Імхо треба юзати асемблер...
А що це дасть ? В захищеному режимі в третьому кільці до заліза просто так не дістанешся... В MSDN написано, що хоча й є клас WMI для датчиків температури, але його метод з отриманням поточного значення температури не працює і зарезервований для майбутнього використання... HWMonitor, як мені здалося з лістингу OllyDbg, читає таблиці ACPI...
Хто перший знайде вирішення даної проблеми, нехай скине сюди якусь інформацію - думаю, знайдуться люди, яким це згодиться...
Повідомлення відредагував volodymyr_ch: 17.06.2008 – 22:29
#7
Відправлено 17.06.2008 – 23:16
Мені здається - використовується API функція DeviceIOControl.
#8
Відправлено 17.06.2008 – 23:48
Принаймні у приєднаному файлі HDDInfo.zip, за допомогою DeviceIOControl читається температура вінчестеру (вихідники на VB6).[attachment=15000:HDDInfo.zip]
Кількість користувачів, що читають цю тему: 1
0 користувачів, 1 гостей, 0 анонімних