gpt4 book ai didi

c - 使用 GetProcessMemoryInfo 查找内存利用率

转载 作者:行者123 更新时间:2023-11-30 19:14:15 31 4
gpt4 key购买 nike

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

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

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

void PrintProcessNameAndID( DWORD 进程ID )

{

TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
PROCESS_MEMORY_COUNTERS info, info1, info2;
SIZE_T MemoryUsage;
SIZE_T one,two,three, four;
// Get a handle to the process.

HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );

// Get the process name.

if (NULL != hProcess )
{
HMODULE hMod;
DWORD cbNeeded;

if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
&cbNeeded) )
{
GetModuleBaseName( hProcess, hMod, szProcessName,
sizeof(szProcessName)/sizeof(TCHAR) );
}
}

// Print the process name and identifier.
//_tprintf( TEXT("%s (PID: %u)"), szProcessName, processID );
GetProcessMemoryInfo(hProcess, &info, sizeof(info));
MemoryUsage = (info.WorkingSetSize);

}

最佳答案

某些 Windows 进程需要的值小于 PROCESS_QUERY_INFORMATION(例如 PROCESS_QUERY_LIMITED_INFORMATION)。

结果是 OpenProcess 可能返回 NULL。

这是在您的测试中处理的,但是,您始终调用GetProcessMemoryInfo

结果将是调用失败。 info 内存未初始化,导致一些随机值 (0xccccccccccccd000)。

关于c - 使用 GetProcessMemoryInfo 查找内存利用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34433973/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com