123
This commit is contained in:
77
Editor/ProcessInfo.cpp
Normal file
77
Editor/ProcessInfo.cpp
Normal file
@@ -0,0 +1,77 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Crytek Engine Source File.
|
||||
// Copyright (C), Crytek Studios, 2002.
|
||||
// -------------------------------------------------------------------------
|
||||
// File name: processinfo.cpp
|
||||
// Version: v1.00
|
||||
// Created: 13/5/2002 by Timur.
|
||||
// Compilers: Visual Studio.NET
|
||||
// Description:
|
||||
// -------------------------------------------------------------------------
|
||||
// History:
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "StdAfx.h"
|
||||
#include "processinfo.h"
|
||||
|
||||
#include "Psapi.h"
|
||||
|
||||
typedef BOOL (*GetProcessMemoryInfoProc)(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD);
|
||||
|
||||
static HMODULE g_hPSAPI = 0;
|
||||
static GetProcessMemoryInfoProc g_pGetProcessMemoryInfo = 0;
|
||||
|
||||
CProcessInfo::CProcessInfo(void)
|
||||
{
|
||||
}
|
||||
|
||||
CProcessInfo::~CProcessInfo(void)
|
||||
{
|
||||
UnloadPSApi();
|
||||
}
|
||||
|
||||
void CProcessInfo::LoadPSApi()
|
||||
{
|
||||
if (!g_hPSAPI)
|
||||
{
|
||||
g_hPSAPI = LoadLibrary("psapi.dll");
|
||||
|
||||
if (g_hPSAPI)
|
||||
{
|
||||
g_pGetProcessMemoryInfo = (GetProcessMemoryInfoProc)GetProcAddress(g_hPSAPI, "GetProcessMemoryInfo");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CProcessInfo::UnloadPSApi()
|
||||
{
|
||||
if (g_hPSAPI)
|
||||
{
|
||||
FreeLibrary(g_hPSAPI);
|
||||
g_hPSAPI = 0;
|
||||
g_pGetProcessMemoryInfo = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void CProcessInfo::QueryMemInfo( ProcessMemInfo &meminfo )
|
||||
{
|
||||
if (!g_pGetProcessMemoryInfo)
|
||||
{
|
||||
memset(&meminfo, 0, sizeof(ProcessMemInfo));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
PROCESS_MEMORY_COUNTERS pc;
|
||||
HANDLE hProcess = GetCurrentProcess();
|
||||
pc.cb = sizeof(pc);
|
||||
g_pGetProcessMemoryInfo( hProcess, &pc, sizeof(pc) );
|
||||
|
||||
meminfo.WorkingSet = pc.WorkingSetSize;
|
||||
meminfo.PeakWorkingSet = pc.PeakWorkingSetSize;
|
||||
meminfo.PagefileUsage = pc.PagefileUsage;
|
||||
meminfo.PeakPagefileUsage = pc.PeakPagefileUsage;
|
||||
meminfo.PageFaultCount = pc.PageFaultCount;
|
||||
}
|
||||
Reference in New Issue
Block a user