in ctsPerf/ctsPerf.cpp [1932:2049]
void ProcessPerProcessCounters(const wstring& trackProcess, const DWORD processId, ctsPerf::ctsWriteDetails& writer)
{
vector<ULONGLONG> ullData;
wstring counterClassname;
if (!trackProcess.empty())
{
wstring fullname(trackProcess);
fullname += L".exe";
counterClassname = wil::str_printf<std::wstring>(L"Process (%ws)", fullname.c_str());
}
else
{
counterClassname = wil::str_printf<std::wstring>(L"Process (pid %u)", processId);
}
auto perProcessRange = g_perProcessPrivilegedTime->reference_range();
ullData.assign(perProcessRange.first, perProcessRange.second);
if (g_meanOnly)
{
writer.WriteMean(
counterClassname.c_str(),
L"PercentPrivilegedTime",
ullData);
}
else
{
writer.WriteDetails(
counterClassname.c_str(),
L"PercentPrivilegedTime",
ullData);
}
perProcessRange = g_perProcessProcessorTime->reference_range();
ullData.assign(perProcessRange.first, perProcessRange.second);
if (g_meanOnly)
{
writer.WriteMean(
counterClassname.c_str(),
L"PercentProcessorTime",
ullData);
}
else
{
writer.WriteDetails(
counterClassname.c_str(),
L"PercentProcessorTime",
ullData);
}
perProcessRange = g_perProcessUserTime->reference_range();
ullData.assign(perProcessRange.first, perProcessRange.second);
if (g_meanOnly)
{
writer.WriteMean(
counterClassname.c_str(),
L"PercentUserTime",
ullData);
}
else
{
writer.WriteDetails(
counterClassname.c_str(),
L"PercentUserTime",
ullData);
}
perProcessRange = g_perProcessPrivateBytes->reference_range();
ullData.assign(perProcessRange.first, perProcessRange.second);
if (g_meanOnly)
{
writer.WriteMean(
counterClassname.c_str(),
L"PrivateBytes",
ullData);
}
else
{
writer.WriteDetails(
counterClassname.c_str(),
L"PrivateBytes",
ullData);
}
perProcessRange = g_perProcessVirtualBytes->reference_range();
ullData.assign(perProcessRange.first, perProcessRange.second);
if (g_meanOnly)
{
writer.WriteMean(
counterClassname.c_str(),
L"VirtualBytes",
ullData);
}
else
{
writer.WriteDetails(
counterClassname.c_str(),
L"VirtualBytes",
ullData);
}
perProcessRange = g_perProcessWorkingSet->reference_range();
ullData.assign(perProcessRange.first, perProcessRange.second);
if (g_meanOnly)
{
writer.WriteMean(
counterClassname.c_str(),
L"WorkingSet",
ullData);
}
else
{
writer.WriteDetails(
counterClassname.c_str(),
L"WorkingSet",
ullData);
}
}