我有问题。我正在尝试获取进程的内存使用率,但不幸的是,某些进程在我的情况下始终返回相同的值-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);
您没有检查错误的返回值。您只需执行此操作即可。显然其中之一是失败的。是OpenProcess
不是GetProcessMemoryInfo
?没有任何错误检查,我们如何知道。阅读该功能的文档,并按照此处提供的说明检查错误。
一旦确定哪个功能失败,您可以尝试找出原因。万一发生故障,这两个函数都将设置最后一个错误值,因此您可以调用GetLastError
找出出了什么问题。
很可能OpenProcess
是因为您要求太多的访问权限而导致失败。您所需要的就是PROCESS_QUERY_INFORMATION | PROCESS_VM_READ
。另一种可能的故障模式是某些系统进程不会放弃此信息。最终,您需要执行错误检查以诊断特定问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句