Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как определить загрузку процессора

12K
07 октября 2007 года
Apelsin
21 / / 06.07.2006
Никак не могу разобраться с определение загрузки каждого процессора.
пользуюсь функцией NtQuerySystemInformation. она в структуре SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION выдает IdleTime; KernelTime; UserTime; каким образом на основе этих данных посчитать загрузку процессора?
попробовал разные комбинации, результат не правдоподобный получается.


Код:
SYSTEM_BASIC_INFORMATION    sysinfo;
    ULONG                   ReturnLength;

    NTSTATUS (WINAPI *pNtQuerySystemInformation)(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
    HMODULE hModule=LoadLibrary("Ntdll.dll");
    pNtQuerySystemInformation = (NTSTATUS (WINAPI*)(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG))GetProcAddress(hModule,"NtQuerySystemInformation");
    if(pNtQuerySystemInformation==NULL) abort();
   
    SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION PerfomanceData[2];// = new SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION[m_processor_count];
    ULONG ReturnSize;

    (pNtQuerySystemInformation)(SystemProcessorPerformanceInformation, PerfomanceData, sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION)*m_processor_count, &ReturnSize);

   
    __int64 sum = (__int64(PerfomanceData[a_ProcessorNum].KernelTime.QuadPart) + __int64(PerfomanceData[a_ProcessorNum].IdleTime.QuadPart));
    __int64 del = (__int64(PerfomanceData[a_ProcessorNum].UserTime.QuadPart));
    __int64 PercentUsage = sum / del;

    return int(PercentUsage);
1.9K
15 октября 2007 года
max_dark
256 / / 11.11.2005
http://sources.codenet.ru/download/677/cpu_usage.html
Рабочий исходник(Delphi)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог