Xamarin Public Jenkins (auto-signing) e79aa3c0ed Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
2016-08-03 10:59:49 +00:00

110 lines
3.1 KiB
C#

//----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
namespace System.ServiceModel
{
using System.Runtime;
static class OSEnvironmentHelper
{
private static readonly OSVersion currentVersion;
private static readonly byte currentServicePack;
static OSEnvironmentHelper()
{
currentServicePack = (byte)Environment.OSVersion.Version.MajorRevision;
int major = Environment.OSVersion.Version.Major;
int minor = Environment.OSVersion.Version.Minor;
if ((major < 5) || ((major == 5) && (minor == 0)))
{
currentVersion = OSVersion.PreWinXP;
}
if ((major == 5) && (minor == 1))
{
currentVersion = OSVersion.WinXP;
}
else if ((major == 5) && (minor == 2))
{
currentVersion = OSVersion.Win2003;
}
else if ((major == 6) && (minor == 0))
{
currentVersion = OSVersion.WinVista;
}
else if ((major == 6) && (minor == 1))
{
currentVersion = OSVersion.Win7;
}
else if ((major == 6) && (minor == 2))
{
currentVersion = OSVersion.Win8;
}
else if ((major > 6) ||
((major == 6) && (minor > 2)))
{
currentVersion = OSVersion.PostWin8;
}
else
{
// This should only be possible if major == 5 and minor > 2
Fx.Assert(false, "Unknown OS");
currentVersion = OSVersion.Unknown;
}
}
internal static bool IsVistaOrGreater
{
get
{
return IsAtLeast(OSVersion.WinVista);
}
}
internal static bool IsApplicationTargeting45
{
get
{
#pragma warning disable 0618
return System.Net.WebSockets.WebSocket.IsApplicationTargeting45();
#pragma warning restore 0618
}
}
internal static int ProcessorCount
{
get
{
return Environment.ProcessorCount;
}
}
internal static bool IsAtLeast(OSVersion version)
{
return IsAtLeast(version, 0);
}
static bool IsAtLeast(OSVersion version, byte servicePack)
{
Fx.Assert(version != OSVersion.Unknown, "Unknown OS");
if (servicePack == 0)
{
return version <= currentVersion;
}
// If a SP value is provided and we have the same OS version, compare SP values
if (version == currentVersion)
{
return servicePack <= currentServicePack;
}
return version < currentVersion;
}
}
}