Подскажите как в ХР узнать загрузку процессора. Знаю про NtQuerySystemInformation и GetSystemTimes, но мой результат сильно отличается от диспетчера. И влияет ли количество ядер процессора при определении загруженности. Язык С++.
Подскажите как в ХР узнать загрузку процессора. Знаю про NtQuerySystemInformation и GetSystemTimes, но мой результат сильно отличается от диспетчера. И влияет ли количество ядер процессора при определении загруженности. Язык С++.
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
6 июля 2009 в 19:05
Все. Всем спасибо, разобрался!
6 июля 2009 в 16:03
GetSystemTimes возвращает три переменные, что на что делить?
И у меня она почему-то всегда везде возвращает нули. Как ее правильно использовать?
6 июля 2009 в 15:03
Если тебе нужно получить время выполнения ПРОЦЕССА, то GetProcessTimes. Не знаю, к чему её посоветовали в данном случае.
По-видимому тебе просто нужен процент загрузки ПРОЦЕССОРА (не ПРОЦЕССА), как в диспетчере задач. Ничего перебирать не надо. Просто вызвать GetSystemTimes – получаем время выполнения; через секунду вызвать еще раз. Разделить разницу в показаниях функции на эту секунду и умножить на 100% – вот и загрузка. NtQuerySystemInformation тут ни к чему.
Надо учесть, что GetSystemTimes возвращает суммарное время всех ядер. Если нужно получить загрузку ядер по отдельности, то по-видимому, придется использовать WMI.
6 июля 2009 в 11:04
Так это надо перебирать все процессы? Зачем тогда NtQuerySystemInformation и GetSystemTimes?
6 июля 2009 в 0:04
Суммарная загрузка каждого процесса даст загрузку системы
> А как получить кол-во ядер
GetSystemInfo()
5 июля 2009 в 23:04
А как получить кол-во ядер?
5 июля 2009 в 23:00
Нет. Мне нужно узнать общую загрузку.
5 июля 2009 в 22:05
GetProcessTimes()
> И влияет ли количество ядер
Да. Результат нужно поделить на число ядер