在这里可以讨论所有关于Windows Mobile开发的话题,无论是.NET Compact Framework还是C++,无论是SQL Mobile还是Mobile Software Factory。而我唯一的期望就是,大家在问问题的同时,也将自己的经验在这里分享。
马老师,请教一个问题:如何获取一个进程所占内存的大小?我找了半天,一直没有寻找到答案,希望马老师能够指教一二。
我目前采用:
DWORD GetUsedMemory(DWORD pID)
{
DWORD memUsage = 0;
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPHEAPLIST, pID);
if (INVALID_HANDLE_VALUE != hSnapShot)
{
HEAPLIST32 heapList;
heapList.dwSize = sizeof(HEAPLIST32);
BOOL bOk = Heap32ListFirst(hSnapShot, &heapList);
for (; bOk; bOk = Heap32ListNext(hSnapShot, &heapList))
{
HEAPENTRY32 he;
he.dwSize = sizeof(HEAPENTRY32);
BOOL fOK = Heap32First(hSnapShot, &he, pID, heapList.th32HeapID);
for(; fOK; fOK = Heap32Next(hSnapShot, &he))
{
memUsage += he.dwBlockSize;
}
}
// 关闭快照句柄
CloseToolhelp32Snapshot(hSnapShot);
}
return memUsage;
}
这个方法与实际有出入,有没有什么方法可以更快捷更精确么?请指教。
