Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 24.11.2009, 06:17   #1
FalseMaster
Пользователь
 
Регистрация: 11.10.2009
Сообщений: 14
Репутация: 10
По умолчанию Получение информации о железе

Здравствуйте. Пытаюсь написать маленькую утилитку, которая отображает температуру железок. Вопросов вообще-то уйма, но во-избежание путаницы решил задавать по порядку. Для начала хотелось бы узнать, каким образом определяется количество физических процессоров ("GetSystemInfo" не предлагать, ибо HyperThreading/многоядерность), желательно пример кода.
FalseMaster вне форума   Ответить с цитированием
Старый 24.11.2009, 11:26   #2
raxp
Профессионал
 
Регистрация: 29.09.2009
Сообщений: 9,734
Репутация: 3006
По умолчанию

процитирую...
Цитата:
Функция API GetSystemInfo позволяет узнать несколько параметров процессора. Функция имеет вид:

procedure GetSystemInfo(var lpSystemInfo: TSystemInfo); stdcall;

Функция заполняет поля структуры lpSystemInfo, в частности, там есть поля:

* dwActiveProcessorMask - битовая маска, представляющая процессоры, установленные в системе (каждый бит соответствут процессору, например, в двухпроцессорной системе установлено два младших бита)
* dwNumberOfProcessors - количество процессоров в системе
* dwProcessorType - тип процессора
* wProcessorLevel, wProcessorRevision - характеристики процессора (их трактовка зависит от типа)

При этом следует учесть, что процессоры с технологией HT считаются как два процессора (при условии, что включена поддержка HT)


В мультипроцессорной системе (на базе нескольких процессоров или процессора с технологией HyperThreading) можно указать системе, на каком процессоре рекомендуется выполнять поток. Реализуется это при помощи функции API SetThreadIdealProcessor:

function SetThreadIdealProcessor(hThread: THandle; dwIdealProcessor: DWORD): BOOL;

Thread - Handle потока, для текущего потока приложения его можно узнать через GetCurrentThread
dwIdealProcessor - номер процессора (отсчет идет с 0)

Вот пример как выполнить поток на нужном процессоре

begin
// Выбор процессора
SetThreadIdealProcessor(GetCurrentT hread, 1);
// Мертвый цикл
WHILE TRUE DO ;
end;
__________________
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума   Ответить с цитированием
Старый 25.11.2009, 07:05   #3
FalseMaster
Пользователь
 
Регистрация: 11.10.2009
Сообщений: 14
Репутация: 10
По умолчанию

Цитата:
При этом следует учесть, что процессоры с технологией HT считаются как два процессора (при условии, что включена поддержка HT)
Ну так я об этом и говорю. Интересно было бы узнать, как BIOS это дело определяет.
FalseMaster вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение "скрытой" информации из bmp Alex Cones Мультимедиа в Delphi 6 11.06.2009 11:07
Сведенья о системе и железе Djem1991 Общие вопросы Delphi 5 07.02.2009 22:38
Получение информации из мр3 GAGARIN-NEW Мультимедиа в Delphi 2 24.03.2008 16:19
обновление в блоге - Получение информации о загрузке системы. Pblog Обсуждение статей 0 08.01.2008 19:30
Получение информации о классе Sibedir Общие вопросы Delphi 7 07.12.2007 15:37


06:48.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru