Почему любое значение из счетчика памяти процесса не похоже на значение используемой памяти, показанное в диспетчере задач?

Счетчик памяти процесса — это определенная структура, доступная в 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.

Но значение памяти, отображаемое в диспетчере задач, не совпадает ни с одним из значений в структуре. Мои вопросы

  1. Каковы эти значения?
  2. Какое значение отображается в диспетчере задач?
  3. Как программно можно использовать память, отображаемую в диспетчере задач?
  4. Можно ли рассчитать сам счетчик памяти процесса?

PS: предпочтительным языком является C ++, и я хочу сделать это без запуска каких-либо команд в командной строке.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]