| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- //----------------------------------------------------------------------------
- // 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;
- }
- }
- }
|