Как получить физическую память и процессор, используемый определенным процессом в Windows?

0

Привет, это мой код, который печатает физическую память, используемую некоторым процессом, отображаемым в байтах, когда я конвертирую байты в kb с помощью конвертера Google. Значение, указанное в диспетчере задач для использования памяти, меньше результата, указанного моим кодом. Также я хочу знать процессор, используемый одним и тем же процессом? Я нашел этот вопрос в переполнении стека, ИСПОЛЬЗОВАНИЕ ЦП, который дает указания в знании использования процессора, но я хочу знать использование ЦП для некоторого Частного идентификатора процесса вместо текущего процесса, как указано в моем коде. Могу ли я добиться того же самого с кодом,

Любые рекомендации будут оценены.

int main( void )
{
    HANDLE hProcess;
    PROCESS_MEMORY_COUNTERS pmc;
    DWORD processID = 4696;


    // Print information about the memory usage of the process.

    hProcess = OpenProcess(  PROCESS_QUERY_INFORMATION |
                                    PROCESS_VM_READ,
                                    FALSE, processID );
    if (NULL == hProcess)
        return 1;

    if ( GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) )
    {

        printf( "\tWorkingSetSize: %u\n", pmc.WorkingSetSize );
    }

    CloseHandle( hProcess );
    return 0;
}
Теги:

1 ответ

1
Лучший ответ

ЦПУ

Из связанного ответа вы хотите использовать дескриптор "hProcess" вместо дескриптора "self" из образца.

Поверните это:

self = GetCurrentProcess();
GetProcessTimes(self, &ftime, &ftime, &fsys, &fuser);
...

В этом:

GetProcessTimes(hProcess, &ftime, &ftime, &fsys, &fuser);
...

Память

Рабочий набор состоит из Private (куча, стек и т.д.) + Shared (обычно кодовых страниц dll/exe). В какой конкретной колонке в диспетчере задач (и какой ОС) вы ссылаетесь?

  • 0
    Я имею в виду столбцы Memory (Private Working set) и CPU в диспетчере задач.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню