Как получить счетчик производительности Windows для текущего процесса
Я пишу код для C++ приложения foo.exe. Внутри приложения я хочу регистрировать использование его адресного пространства. Итак, счетчик производительности, на который я хочу посмотреть, это "\Process(foo)\Virtual Bytes". Проблема, с которой я сталкиваюсь, заключается в том, что в системе может работать несколько экземпляров foo.exe. В perfmon я вижу, что они упоминаются как "\Process(foo#2)\Virtual Bytes", где № 2 может быть любым числом в зависимости от количества процессов.
Как я могу построить встречный путь, чтобы получить виртуальные байты для текущего процесса, который обрабатывает случай, когда есть несколько экземпляров процесса?
2 ответа
Ваш экземпляр тот, который имеет ID Process
значение счетчика, соответствующее вашему текущему идентификатору процесса. К сожалению, нет другого способа, кроме как получить все экземпляры и перечислить их, пока вы не найдете экземпляр, который принадлежит вам, но это довольно тривиально.
Если все, что вам нужно, это виртуальные байты (или другая статистика памяти) для вашего процесса, гораздо проще использовать GetProcessMemoryInfo, как описано в разделе Как определить "виртуальный размер" процесса (WinXP)?,