使用GetProcessMemoryInfo查找内存利用率

时间:2015-12-23 10:50:13

标签: c windows

在我的应用程序中,我试图使用下面提到的API来计算Windows机器中特定进程的内存利用率。

GetProcessMemoryInfo(hProcess,& info,sizeof(info)); 当我检查info.WorkingSetSize的值时,它恰好是14757395258967641292。

所以我想清楚返回的值是否以字节为单位(对于肉眼而言,这不能是字节格式)?如果不是如何将其转换为字节或千字节。

void PrintProcessNameAndID(DWORD processID)

{

from __future__ import print_function
from kkconst import (
    BaseConst,
    ConstFloatField,
)

class MathConst(BaseConst):
    PI = ConstFloatField(3.1415926, verbose_name=u"Pi")
    E = ConstFloatField(2.7182818284, verbose_name=u"mathematical constant")  # Euler's number"
    GOLDEN_RATIO = ConstFloatField(0.6180339887, verbose_name=u"Golden Ratio")

magic_num = MathConst.GOLDEN_RATIO
assert isinstance(magic_num, ConstFloatField)
assert isinstance(magic_num, float)

print(magic_num)  # 0.6180339887
print(magic_num.verbose_name)  # Golden Ratio

}

1 个答案:

答案 0 :(得分:1)

某些Windows进程需要的值小于os.path.join("targetDir", "fileName") (例如PROCESS_QUERY_INFORMATION)。

结果是OpenProcess可能返回NULL。

这是在您的测试中处理的,然而,您始终致电PROCESS_QUERY_LIMITED_INFORMATION

结果将是失败的通话。使用GetProcessMemoryInfo的未初始化内存导致一些随机值(0xccccccccccccd000)。