110 lines
3.1 KiB
C#
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;
|
||
|
}
|
||
|
}
|
||
|
}
|