Посл.ответ |
Сообщение |
 Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 25 августа 2007 00:18 · Личное сообщение · #1
При помощи каких API-функций диспетчер задач получает инфу о степени загруженности ЦП?
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
|
 Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 25 августа 2007 00:52 · Личное сообщение · #2
Windows performance counters - pdh.h, Toolhelp - tlhelp32.h
| Сообщение посчитали полезным: |
 Ранг: 605.2 (!), 341thx Активность: 0.47↘0.25 Статус: Модератор Research & Development
|
Создано: 25 августа 2007 01:38 · Личное сообщение · #3
см. статьи по теме на Code Project http://www.codeproject.com/system/#General
----- EnJoy! | Сообщение посчитали полезным: |
 Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 25 августа 2007 13:38 · Поправил: Gambit · Личное сообщение · #4
Накопал в диспетчере задач место, где происходит подсчет процента загрузки ЦП:
01002D73_|> 8B35 70110001_MOV ESI,DWORD PTR DS:[<&KERNEL32.GetProcessHeap>]__ ;_kernel32.GetProcessHeap
01002D79_|. 68 80000000__PUSH 80_______________________ ; /HeapSize = 80 (128.)
01002D7E_|. 6A 00_____PUSH 0________________________; |Flags = 0
01002D80_|. FFD6_____ CALL ESI_______________________; |[GetProcessHeap
01002D82_|. 50______ PUSH EAX_______________________; |hHeap
01002D83_|. FF15 6C110001_CALL DWORD PTR DS:[<&KERNEL32.HeapAlloc>]______ ; \HeapAlloc
01002D89_|. 8BF8_____ MOV EDI,EAX
01002D8B_|. 85FF_____ TEST EDI,EDI
01002D8D_|. 74 19_____JE SHORT taskmgr.01002DA8
01002D8F_|. 0FB605 5465010>MOVZX EAX,BYTE PTR DS:[1016554]
01002D96_|. 50______ PUSH EAX
01002D97_|. 68 E05A0101__PUSH taskmgr.01015AE0________________ ; |Format = "Загрузка ЦП: %d%%"
01002D9C_|. 6A 40_____PUSH 40_______________________ ; |N = 40 (64.)
01002D9E_|. 57______ PUSH EDI_______________________; |S
01002D9F_|. FF15 DC110001_CALL DWORD PTR DS:[<&SHLWAPI.wnsprintfW>]______ ; \wnsprintfW
Попробовал написать нечто подобное на Сях:
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
char pr[256];
wsprintf(pr,"%i",HeapAlloc(GetProcessHeap,NULL,128));
MessageBox(0,pr,pr,0);
}
Компилируется нормально, но вылетает с ошибкой на команде HeapAlloc (то есть, мессага не показывается)
Что делать?
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
 Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE
|
Создано: 25 августа 2007 14:10 · Личное сообщение · #5
это не подсчёт, а уже вывод....
насколько я помню подсчитывает он с помощью ZwQueryInformationProcess
класс ифны не помню...
----- [nice coder and reverser] | Сообщение посчитали полезным: |
Ранг: 228.7 (наставник), 2thx Активность: 0.12↘0 Статус: Участник malware research
|
Создано: 25 августа 2007 14:15 · Личное сообщение · #6
Нда... жесть  Загляни-ка сюда http://www.codeproject.com/system/cpuusage.asp лучше (How to get CPU usage by performance counters (without PDH))
----- Research is my purpose | Сообщение посчитали полезным: |
 Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 25 августа 2007 14:28 · Личное сообщение · #7
На Васме нашел про такую структуру: MEMORYSTATUS, но.. если написать:
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MEMORYSTATUS mst;
GlobalMemoryStatus(&mst);
char pr[256];
wsprintf(pr,"%i",mst.dwMemoryLoad);
MessageBox(0,pr,pr,0);
}
то все время выводит 56( иногда - 59 или 60) =\
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
 Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 25 августа 2007 16:28 · Личное сообщение · #8
Вот эта прога только у меня все время одно и тоже число процентов показывает? Скачал с Васма. Может, кто найдет ошибку... (см аттач, 15 Кб) 781e_25.08.2007_CRACKLAB.rU.tgz - memgraphv0.3.zip
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
Ранг: 617.3 (!), 677thx Активность: 0.54↘0 Статус: Участник
|
Создано: 25 августа 2007 17:17 · Личное сообщение · #9
Как я понял ЦП это нагрузка на проц, а то что у тебя показывается это сколько физической памяти используется.
| Сообщение посчитали полезным: |
 Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 25 августа 2007 17:46 · Личное сообщение · #10
Vovan666
А как нагрузку на проц узнать?
Error_Log пишет:
Загляни-ка сюда лучше (How to get CPU usage
Однако.. А чего-нибудь менее навороченное, а то в этом примере столько классов, что нифига не компилиться и мозги в рулик сворачиваются
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
Ранг: 3.0 (гость) Активность: 0=0 Статус: Участник
|
Создано: 25 августа 2007 18:25 · Личное сообщение · #11
Gambit
Если интересна работа на низком уровне, то гляди в сторону MSR регистров процессора.
В общем случае, это работа с привилегированными командами RDMSR/WRMSR, а в частном(для последних моделей) - RDPMC.
| Сообщение посчитали полезным: |
Ранг: 617.3 (!), 677thx Активность: 0.54↘0 Статус: Участник
|
Создано: 25 августа 2007 18:32 · Личное сообщение · #12
На верное ВОТ http://www.sources.ru/cpp/faqs/56.htm , что тебе нужно.
| Сообщение посчитали полезным: |
 Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 25 августа 2007 19:22 · Личное сообщение · #13
Vovan666
Может это и оно, тока у мну вылетает на первой же обработке ошибок (при том компилится нормально)
Неужели все способы настолько извращенческие? (я имею ввиду, неужели это нельзя сделать как-нибудь через АПИ?...)
mathio пишет:
Если интересна работа на низком уровне, то гляди в сторону MSR регистров процессора.
Интересна  А где про такое можно почитать? (на русском, желательно)
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
Ранг: 253.9 (наставник) Активность: 0.13↘0 Статус: Участник
|
Создано: 25 августа 2007 19:31 · Поправил: Tim · Личное сообщение · #14
Вообще-то в реестре есть параметр, куда постоянно пишется загрузка процессора... и не только.
----- MicroSoft? Is it some kind of a toilet paper? | Сообщение посчитали полезным: |
 Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 25 августа 2007 19:49 · Личное сообщение · #15
Tim
Что за параметр?
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
 Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 25 августа 2007 20:48 · Личное сообщение · #16
Нашел АПИ функу! Вот только как ее применить
DaragoiKomputerPakagiPogalustaZagruzkuPracessora(ochen nada, gelatelno v pracentah: nu ocen nada);
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
Ранг: 284.8 (наставник), 6thx Активность: 0.15↘0 Статус: Участник
|
Создано: 25 августа 2007 20:52 · Личное сообщение · #17 |
 Ранг: 340.0 (мудрец), 22thx Активность: 0.12↘0 Статус: Участник THETA
|
Создано: 25 августа 2007 23:07 · Личное сообщение · #18
NtQuerySystemInformation
Читай здесь http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/ntquerysysteminformation.asp
----- Программист SkyNet | Сообщение посчитали полезным: |
 Ранг: 340.0 (мудрец), 22thx Активность: 0.12↘0 Статус: Участник THETA
|
Создано: 26 августа 2007 08:17 · Личное сообщение · #19
Gambit
1. Есть соответствующая тема на форуме MASM32, с примерами реализации LINK_1 http://www.masm32.com/board/topic=1935.0 - masm32
2. Реализация на Бейсике LINK_2 http://www.powerbasic.com/support/forums/Forum7/HTML/002207.html и LINK_3 http://www.powerbasic.com/support/forums/Forum7/HTML/002459.html посредством NtQuerySystemInformation.
3. Реализация на C++ LINK_4 http://spotlight.de/nzforen/acpp/m/acpp-1105521271-30099.html , считывающая данные из реестра.
----- Программист SkyNet | Сообщение посчитали полезным: |
Ранг: 117.1 (ветеран) Активность: 0.05↘0 Статус: Участник
|
Создано: 26 августа 2007 12:07 · Личное сообщение · #20
NtQuerySystemInformation с флагом 5. А дальше ручки и мозги для написания простейшего алгоритма высчитывания загрузки от времени.
----- Security through obscurity is just an illusion | Сообщение посчитали полезным: |
 Ранг: 340.0 (мудрец), 22thx Активность: 0.12↘0 Статус: Участник THETA
|
Создано: 26 августа 2007 13:11 · Поправил: FrenFolio · Личное сообщение · #21
Для полного счастья держи сырцы диспетчера задач на C++ от самих мелкомягких filesurf.ru/13467
pushick пишет:
А дальше ручки и мозги для написания
----- Программист SkyNet | Сообщение посчитали полезным: |
 Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 26 августа 2007 13:31 · Поправил: Gambit · Личное сообщение · #22
Ух ты, сколько всего
Спасибо, пойду использовать ручки и мозги для написания
Если чего нормальное получится - выложу)
////////////////////////////
тому посту, что ниже:
Rouse_, и таби спасибо
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
Ранг: 35.1 (посетитель), 1thx Активность: 0.01↘0 Статус: Участник
|
Создано: 27 августа 2007 11:47 · Личное сообщение · #23
Я в свое время вот так выводил данную информацию: rouse.drkb.ru/winapi.php#taskmon
| Сообщение посчитали полезным: |
 Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 27 августа 2007 21:37 · Личное сообщение · #24
для NtQuerySystemInformation нужен заг. файл Winternl.h
Никто не знает где его можно скачать?
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
Ранг: 73.1 (постоянный), 130thx Активность: 0.04↗0.23 Статус: Участник
|
Создано: 27 августа 2007 21:46 · Личное сообщение · #25
хм... кто тебе это сказал?
ты нашёл сорс, юзающий левый хидер
NtQuerySystemInformation есть в ntdll.h
| Сообщение посчитали полезным: |
 Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 27 августа 2007 22:13 · Личное сообщение · #26
RamMerlabs пишет:
хм... кто тебе это сказал?
Вобще-то так написано в MSDN http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/ntquerysysteminformation.asp
RamMerlabs пишет:
есть в ntdll.h
А где этот заг. скачать можно?
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
Ранг: 73.1 (постоянный), 130thx Активность: 0.04↗0.23 Статус: Участник
|
Создано: 27 августа 2007 22:29 · Личное сообщение · #27
>>Вобще-то так написано в MSDN
хм... может в новых версиях SDK/DDK так и есть.
>>А где этот заг. скачать можно?
в SDK, DDK
или на васме поищи
| Сообщение посчитали полезным: |
Ранг: 117.1 (ветеран) Активность: 0.05↘0 Статус: Участник
|
Создано: 28 августа 2007 06:19 · Личное сообщение · #28
Gambit
А ntdll.lib ты уже нашел? На rootkits.ru в одной теме валяется и то и другое (не помню в какой).
----- Security through obscurity is just an illusion | Сообщение посчитали полезным: |
 Ранг: 107.6 (ветеран) Активность: 0.11↘0 Статус: Участник
|
Создано: 28 августа 2007 14:53 · Личное сообщение · #29
pushick пишет:
А ntdll.lib ты уже нашел? На rootkits.ru в одной теме валяется и то и другое
Не, я нашел, как обойтись без того и без другого
----- программистом не рождаются - им умирают | Сообщение посчитали полезным: |
Ранг: 62.5 (постоянный), 2thx Активность: 0.05↘0 Статус: Участник
|
Создано: 05 сентября 2007 22:24 · Личное сообщение · #30
Представляете недели три тому назад баловался на масме на эту тему
прога моя выводит как диспетчер задач загруженность на одну из 12 иконок
трей не доделал пока только в окне
саму оригинальную прогу скачал с журнала Радио
Она через принтерный порт информацию о загрузке на светодиоды выводила
Вот мой исходник пользуйтесь на здоровье
Если доделаете нормально выложите
у меня времени не хватает доделать
у меня все через один поток поэтому перемещать окно можно только когда на
Sleepe прога сидит
e5a9_05.09.2007_CRACKLAB.rU.tgz - showbmp.rar
| Сообщение посчитали полезным: |