string Profile::GetXml()

in Common/Common.cpp [665:728]


string Profile::GetXml(UINT32 indent) const
{
    string sXml;
    char buffer[4096];

    AddXmlInc(sXml, "<Profile>\n");

    sprintf_s(buffer, _countof(buffer), "<Progress>%u</Progress>\n", _dwProgress);
    AddXml(sXml, buffer);

    if (_resultsFormat == ResultsFormat::Text)
    {
        AddXml(sXml, "<ResultFormat>text</ResultFormat>\n");
    }
    else if (_resultsFormat == ResultsFormat::Xml)
    {
        AddXml(sXml, "<ResultFormat>xml</ResultFormat>\n");
    }
    else
    {
        AddXml(sXml, "<ResultFormat>* UNSUPPORTED *</ResultFormat>\n");
    }

    AddXml(sXml, _fVerbose ? "<Verbose>true</Verbose>\n" : "<Verbose>false</Verbose>\n");
    if (_precreateFiles == PrecreateFiles::UseMaxSize)
    {
        AddXml(sXml, "<PrecreateFiles>UseMaxSize</PrecreateFiles>\n");
    }
    else if (_precreateFiles == PrecreateFiles::OnlyFilesWithConstantSizes)
    {
        AddXml(sXml, "<PrecreateFiles>CreateOnlyFilesWithConstantSizes</PrecreateFiles>\n");
    }
    else if (_precreateFiles == PrecreateFiles::OnlyFilesWithConstantOrZeroSizes)
    {
        AddXml(sXml, "<PrecreateFiles>CreateOnlyFilesWithConstantOrZeroSizes</PrecreateFiles>\n");
    }

    if (_fEtwEnabled)
    {
        AddXmlInc(sXml, "<ETW>\n");
        AddXml(sXml, _fEtwProcess ? "<Process>true</Process>\n" : "<Process>false</Process>\n");
        AddXml(sXml, _fEtwThread ? "<Thread>true</Thread>\n" : "<Thread>false</Thread>\n");
        AddXml(sXml, _fEtwImageLoad ? "<ImageLoad>true</ImageLoad>\n" : "<ImageLoad>false</ImageLoad>\n");
        AddXml(sXml, _fEtwDiskIO ? "<DiskIO>true</DiskIO>\n" : "<DiskIO>false</DiskIO>\n");
        AddXml(sXml, _fEtwMemoryPageFaults ? "<MemoryPageFaults>true</MemoryPageFaults>\n" : "<MemoryPageFaults>false</MemoryPageFaults>\n");
        AddXml(sXml, _fEtwMemoryHardFaults ? "<MemoryHardFaults>true</MemoryHardFaults>\n" : "<MemoryHardFaults>false</MemoryHardFaults>\n");
        AddXml(sXml, _fEtwNetwork ? "<Network>true</Network>\n" : "<Network>false</Network>\n");
        AddXml(sXml, _fEtwRegistry ? "<Registry>true</Registry>\n" : "<Registry>false</Registry>\n");
        AddXml(sXml, _fEtwUsePagedMemory ? "<UsePagedMemory>true</UsePagedMemory>\n" : "<UsePagedMemory>false</UsePagedMemory>\n");
        AddXml(sXml, _fEtwUsePerfTimer ? "<UsePerfTimer>true</UsePerfTimer>\n" : "<UsePerfTimer>false</UsePerfTimer>\n");
        AddXml(sXml, _fEtwUseSystemTimer ? "<UseSystemTimer>true</UseSystemTimer>\n" : "<UseSystemTimer>false</UseSystemTimer>\n");
        AddXml(sXml, _fEtwUseCyclesCounter ? "<UseCyclesCounter>true</UseCyclesCounter>\n" : "<UseCyclesCounter>false</UseCyclesCounter>\n");
        AddXmlDec(sXml, "</ETW>\n");
    }

    AddXmlInc(sXml, "<TimeSpans>\n");
    for (const auto& timespan : _vTimeSpans)
    {
        sXml += timespan.GetXml(indent);
    }
    AddXmlDec(sXml, "</TimeSpans>\n");
    AddXmlDec(sXml, "</Profile>\n");
    return sXml;
}