如何在Windows中获取特定进程使用的物理内存和CPU?

时间:2014-05-26 11:47:23

标签: c++ c windows

嗨,这是我的代码,打印以字节显示的某些进程使用的物理内存,当我通过谷歌转换器将字节转换为kb时。任务管理器中显示的内存使用量值小于我的代码给出的输出值。另外我想知道同一进程使用的Cpu? 我在堆栈溢出CPU USAGE上发现了这个问题,它提供了解cpu使用情况的指导,但我想知道某些特定进程id的CPU使用情况,而不是我的代码中提到的当前进程,我可以实现相同的提供的代码。

任何指导都将不胜感激。

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 个答案:

答案 0 :(得分:1)

<强> CPU

从链接的答案中,您想要使用您的&#39; hProcess&#39;处理而不是自我&#39;处理样本。

转过来:

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

进入这个:

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

<强>内存

工作集由Private(堆,堆栈等)+ Shared(通常为dll / exe代码页)组成。您在任务管理器(以及哪些操作系统)中引用了哪些特定列?