【问题标题】:How to get process memory usage WINAPI如何获取进程内存使用情况 WINAPI
【发布时间】:2014-04-19 14:32:39
【问题描述】:

我有问题。我正在尝试获取进程内存使用情况,但不幸的是,某些进程在我的情况下总是返回相同的值 - 3276。我怎样才能获得进程使用的实际内存量。提前致谢。

HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);
            PROCESS_MEMORY_COUNTERS memCounter;
            BOOL result = GetProcessMemoryInfo(hProcess,
                                   &memCounter,
                                   sizeof( memCounter ));

            char procID[20];
            char procMem[100];
            sprintf_s(procMem, "%d",(memCounter.WorkingSetSize/1024/1024));
            if (!(strcmp(procMem,"3276"))) {

            strcpy(procMem, "<unavaliable>");

            }
            sprintf_s(procID, "%d",entry.th32ProcessID);

【问题讨论】:

    标签: windows winapi memory


    【解决方案1】:

    您没有检查返回值是否有错误。你必须这样做。显然其中一个失败了。是OpenProcess,还是GetProcessMemoryInfo?我们如何在没有任何错误检查的情况下判断。阅读该函数的文档并按照其中的说明检查错误。

    一旦您确定了哪个功能失败,您就可以尝试找出原因。如果发生故障,这两个函数都会设置最后一个错误值,因此您可以致电GetLastError 来判断问题所在。

    很可能OpenProcess 失败了,因为您要求的访问权限太多。您只需要PROCESS_QUERY_INFORMATION | PROCESS_VM_READ。另一种可能的故障模式是某些系统进程不会放弃此信息。最终,您需要执行错误检查来诊断具体问题。

    【讨论】:

    猜你喜欢
    • 2010-10-24
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2011-11-05
    • 2015-03-11
    • 2017-11-11
    • 2012-04-03
    相关资源
    最近更新 更多