ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
получить время ЦП для выбранного процесса |

11.12.2009, 16:00
|
|
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме: 1035284
Репутация:
52
|
|
получить время ЦП для выбранного процесса
привет всем.... есть задача получить список процессов и получить загрузку цп каждым процессом за последнюю секунду... в принципе все это работает и сделано... НО препод заявляет типа загрузку цп лучше считать с помощью NtQuerySystemInformation для каждого процесса но с этим проблема как? каков алгоритм? сейчас все сделано так список процессов через NtQuerySystemInformation загрузку ЦП через GetProcessTimes
но мне не оч нравится такой метод... есть ли альтернатива?
|
|
|

11.12.2009, 17:25
|
|
Banned
Регистрация: 03.11.2009
Сообщений: 112
Провел на форуме: 98006
Репутация:
17
|
|
Сообщение от transserg
привет всем.... есть задача получить список процессов и получить загрузку цп каждым процессом за последнюю секунду... в принципе все это работает и сделано... НО препод заявляет типа загрузку цп лучше считать с помощью NtQuerySystemInformation для каждого процесса но с этим проблема как? каков алгоритм? сейчас все сделано так список процессов через NtQuerySystemInformation загрузку ЦП через GetProcessTimes
но мне не оч нравится такой метод... есть ли альтернатива?
или я совсем дурак или что то ещё... но ты сам себе противоречишь в написаном(= я 5 раз прочитал но всё равно не понял что тебе надо(и опять не в там написали... есть же тред для студентов...)
|
|
|

11.12.2009, 17:29
|
|
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме: 1035284
Репутация:
52
|
|
DeaD_MoroZ в чем? мне надо получить загрузку цп для процесса... спомошью NtQuerySystemInformation если такое возможно..... сейчас этоже задание сделано через GetProcessTimes
|
|
|

11.12.2009, 19:40
|
|
Познающий
Регистрация: 16.07.2008
Сообщений: 82
Провел на форуме: 424387
Репутация:
142
|
|
Сообщение от transserg
НО препод заявляет типа загрузку цп лучше считать с помощью NtQuerySystemInformation для каждого процесса
Это в каком пту?
Код:
.text:7C835241 ; BOOL __stdcall GetProcessTimes(HANDLE hProcess, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime) .text:7C835241 public GetProcessTimes .text:7C835241 GetProcessTimes proc near
.....
mov edi, edi
.text:7C835243 push ebp
.text:7C835244 mov ebp, esp
.text:7C835246 sub esp, 20h
.text:7C835249 push 0
.text:7C83524B push 20h
.text:7C83524D lea eax, [ebp+var_20]
.text:7C835250 push eax
.text:7C835251 push 4
.text:7C835253 push [ebp+hProcess]
.text:7C835256 call ds:NtQueryInformationProcess
|
|
|

11.12.2009, 19:46
|
|
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме: 1035284
Репутация:
52
|
|
_antony далеко не ПТУ =) прост у него привычка сбивать с толку... даже глядя в методички что есть там куча ошибок =) да и ще он как то заявил что ПРИМЕР из методичке не должен работать....
тему можно закрыть.. так как решение найдено останусь на прежнем варианте...
|
|
|
Определяет загрузку ЦП в % для каждого ядра |

11.12.2009, 20:07
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
Определяет загрузку ЦП в % для каждого ядра
Немного не в тему но может кому пригодится.
Код:
//---------
#include "stdio.h"
#include "windows.h"
//---------
typedef DWORD (__stdcall *LPFN_NtQuerySystemInformation)(DWORD, PVOID, DWORD, PDWORD);
#define SystemProcessorPerformanceInformation 0x8
//---------
#pragma pack(push,8)
typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
LARGE_INTEGER IdleTime;
LARGE_INTEGER KernelTime;
LARGE_INTEGER UserTime;
LARGE_INTEGER DpcTime;
LARGE_INTEGER InterruptTime;
ULONG InterruptCount;
} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION,
*PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
#pragma pack(pop)
//---------
int main(int argc, char* argv[]) {
SYSTEM_INFO systeminfo;
unsigned long bytesreturned;
SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION spi_old[32];
memset(spi_old,0,sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION)*32);
SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION spi[32];
memset(spi,0,sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION)*32);
LPFN_NtQuerySystemInformation ntquerysysteminformation =(LPFN_NtQuerySystemInformation) GetProcAddress(GetModuleHandle("ntdll.dll"), "NtQuerySystemInformation");
if(!ntquerysysteminformation) {
printf("\n*** no ntquerysysteminformation api?.. bugger");
return -1;
}
GetSystemInfo(&systeminfo);
printf("\n[i] Processor Count: %d\n",systeminfo.dwNumberOfProcessors);
ntquerysysteminformation(SystemProcessorPerformanceInformation,spi_old, (sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION)*systeminfo.dwNumberOfProcessors),&bytesreturned);
Sleep(500);
ntquerysysteminformation(SystemProcessorPerformanceInformation,spi, (sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION)*systeminfo.dwNumberOfProcessors),&bytesreturned);
for(int cpuloopcount = 0; cpuloopcount < systeminfo.dwNumberOfProcessors; cpuloopcount++) {
BYTE cpuusage = (BYTE) (100 - (((spi[cpuloopcount].IdleTime.QuadPart - spi_old[cpuloopcount].IdleTime.QuadPart) * 100) / \
((spi[cpuloopcount].KernelTime.QuadPart + spi[cpuloopcount].UserTime.QuadPart) - (spi_old[cpuloopcount].KernelTime.QuadPart + spi_old[cpuloopcount].UserTime.QuadPart))));
printf("\n[i] CPU %02d: = %0d%%",cpuloopcount, cpuusage);
}
return 0;
}
|
|
|

11.12.2009, 21:24
|
|
Banned
Регистрация: 03.11.2009
Сообщений: 112
Провел на форуме: 98006
Репутация:
17
|
|
Сообщение от transserg
_antony далеко не ПТУ =) прост у него привычка сбивать с толку... даже глядя в методички что есть там куча ошибок =) да и ще он как то заявил что ПРИМЕР из методичке не должен работать....
тему можно закрыть.. так как решение найдено останусь на прежнем варианте...
видел много примеров из методичек которые ни фига не работают(=
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|