ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

получить время ЦП для выбранного процесса
  #1  
Старый 11.12.2009, 16:00
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

Репутация: 52
Отправить сообщение для transserg с помощью ICQ
По умолчанию получить время ЦП для выбранного процесса

привет всем.... есть задача получить список процессов и получить загрузку цп каждым процессом за последнюю секунду... в принципе все это работает и сделано... НО препод заявляет типа загрузку цп лучше считать с помощью NtQuerySystemInformation для каждого процесса но с этим проблема как? каков алгоритм? сейчас все сделано так список процессов через NtQuerySystemInformation загрузку ЦП через GetProcessTimes
но мне не оч нравится такой метод... есть ли альтернатива?
 
Ответить с цитированием

  #2  
Старый 11.12.2009, 17:25
DeaD_MoroZ
Banned
Регистрация: 03.11.2009
Сообщений: 112
Провел на форуме:
98006

Репутация: 17
Отправить сообщение для DeaD_MoroZ с помощью ICQ
По умолчанию

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

  #3  
Старый 11.12.2009, 17:29
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

Репутация: 52
Отправить сообщение для transserg с помощью ICQ
По умолчанию

DeaD_MoroZ в чем? мне надо получить загрузку цп для процесса... спомошью NtQuerySystemInformation если такое возможно..... сейчас этоже задание сделано через GetProcessTimes
 
Ответить с цитированием

  #4  
Старый 11.12.2009, 19:40
_antony
Познающий
Регистрация: 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
 
Ответить с цитированием

  #5  
Старый 11.12.2009, 19:46
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

Репутация: 52
Отправить сообщение для transserg с помощью ICQ
По умолчанию

_antony далеко не ПТУ =) прост у него привычка сбивать с толку... даже глядя в методички что есть там куча ошибок =) да и ще он как то заявил что ПРИМЕР из методичке не должен работать....
тему можно закрыть.. так как решение найдено останусь на прежнем варианте...
 
Ответить с цитированием

Определяет загрузку ЦП в % для каждого ядра
  #6  
Старый 11.12.2009, 20:07
Gar|k
Постоянный
Регистрация: 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;
}
 
Ответить с цитированием

  #7  
Старый 11.12.2009, 21:24
DeaD_MoroZ
Banned
Регистрация: 03.11.2009
Сообщений: 112
Провел на форуме:
98006

Репутация: 17
Отправить сообщение для DeaD_MoroZ с помощью ICQ
По умолчанию

Цитата:
Сообщение от transserg  
_antony далеко не ПТУ =) прост у него привычка сбивать с толку... даже глядя в методички что есть там куча ошибок =) да и ще он как то заявил что ПРИМЕР из методичке не должен работать....
тему можно закрыть.. так как решение найдено останусь на прежнем варианте...
видел много примеров из методичек которые ни фига не работают(=
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обзор легального бесплатного ПО Sinay Soft - Windows 48 24.04.2010 20:08
МикроДжоинер для начинающих ReanimatoR Статьи 23 02.01.2010 15:07
Раскрутка сайта heks Статьи 15 15.02.2009 19:51



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ