Счетчик памяти процесса - это определенная структура, доступная в psapi (API статуса процесса). Его структура определяется как
typedef struct _PROCESS_MEMORY_COUNTERS {
DWORD cb;
DWORD PageFaultCount;
SIZE_T PeakWorkingSetSize;
SIZE_T WorkingSetSize;
SIZE_T QuotaPeakPagedPoolUsage;
SIZE_T QuotaPagedPoolUsage;
SIZE_T QuotaPeakNonPagedPoolUsage;
SIZE_T QuotaNonPagedPoolUsage;
SIZE_T PagefileUsage;
SIZE_T PeakPagefileUsage;
} PROCESS_MEMORY_COUNTERS;
Я использую метод GetProcessMemoryInfo, который имеет синтаксис,
BOOL GetProcessMemoryInfo(HANDLE Process, PROCESS_MEMORY_COUNTERS* pmc,DWORD size_pmc);
Из указателя структурной переменной pmc я могу получить доступ к WorkingSetSize процесса (скажем, mspaint.exe) как pmc.WorkingSetSize.
Но значение памяти, отображаемое в диспетчере задач, не совпадает ни с одним из значений в structre. Мои вопросы,
- Что это за значения?
- Какое значение отображается в диспетчере задач?
- Как программно можно использовать память, отображаемую в диспетчере задач?
- Можно ли рассчитать с помощью самого счетчика памяти процесса?
PS: предпочтительным языком является C ++, и я хочу сделать это без выполнения каких-либо команд в командной строке.