void MeasureNet::ReadStats(const std::wstring& iniFile, std::wstring& statsDate) { WCHAR buffer[48]; ConfigParser parser; parser.Initialize(iniFile, nullptr, L"Statistics"); const std::wstring& date = parser.ReadString(L"Statistics", L"Since", L"", false); if (!date.empty()) { statsDate = date; } uint32_t count = parser.ReadUInt(L"Statistics", L"Count", 0); if (parser.GetLastDefaultUsed()) { count = parser.ReadUInt(L"Statistics", L"NetStatsCount", 0); } c_StatValues.clear(); c_StatValues.reserve(count * 2); for (uint32_t i = 1; i <= count; ++i) { ULARGE_INTEGER value; _snwprintf_s(buffer, _TRUNCATE, L"In%u", i); value.QuadPart = parser.ReadUInt64(L"Statistics", buffer, 0); if (parser.GetLastDefaultUsed()) { _snwprintf_s(buffer, _TRUNCATE, L"NetStatsInHigh%u", i); value.HighPart = parser.ReadUInt(L"Statistics", buffer, 0); _snwprintf_s(buffer, _TRUNCATE, L"NetStatsInLow%u", i); value.LowPart = parser.ReadUInt(L"Statistics", buffer, 0); } c_StatValues.push_back(value.QuadPart); _snwprintf_s(buffer, _TRUNCATE, L"Out%u", i); value.QuadPart = parser.ReadUInt64(L"Statistics", buffer, 0); if (parser.GetLastDefaultUsed()) { _snwprintf_s(buffer, _TRUNCATE, L"NetStatsOutHigh%u", i); value.HighPart = parser.ReadUInt(L"Statistics", buffer, 0); _snwprintf_s(buffer, _TRUNCATE, L"NetStatsOutLow%u", i); value.LowPart = parser.ReadUInt(L"Statistics", buffer, 0); } c_StatValues.push_back(value.QuadPart); } }