void ProcessPerProcessCounters()

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);
    }
}