Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Tools / WSATConfig / Configuration / Utilities.cs / 1305376 / Utilities.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace Microsoft.Tools.ServiceModel.WsatConfig
{
using System;
using System.IO;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;
static class Utilities
{
static Nullable isHttpApiLibAvailable;
static string localizedMyComputerString;
internal static void Log(string s)
{
/*using (StreamWriter sw = new StreamWriter("c:\\wsat.log", true))
{
sw.WriteLine(s);
sw.Flush();
sw.Close();
}*/
}
internal static bool SafeCompare(string s1, string s2)
{
return string.Compare(s1, s2, StringComparison.OrdinalIgnoreCase) == 0;
}
internal static int OSMajor
{
get { return System.Environment.OSVersion.Version.Major; }
}
internal static int GetOSMajor(string machineName)
{
if (IsLocalMachineName(machineName))
{
return OSMajor;
}
int result = 0;
try
{
IntPtr workstationPtr;
const int WorkstationInformationLevel = 100;
int hr = SafeNativeMethods.NetWkstaGetInfo(
@"\\" + machineName,
WorkstationInformationLevel,
out workstationPtr);
if (hr == SafeNativeMethods.NERR_Success && workstationPtr != IntPtr.Zero)
{
try
{
SafeNativeMethods.WKSTA_INFO_100 workstationInfo = (SafeNativeMethods.WKSTA_INFO_100)Marshal.PtrToStructure(workstationPtr, typeof(SafeNativeMethods.WKSTA_INFO_100));
result = workstationInfo.ver_major;
}
finally
{
#pragma warning suppress 56523
hr = SafeNativeMethods.NetApiBufferFree(workstationPtr);
}
workstationPtr = IntPtr.Zero;
}
}
#pragma warning suppress 56500
catch (Exception ex)
{
if (Utilities.IsCriticalException(ex))
{
throw;
}
}
return result;
}
#if WSAT_CMDLINE
internal static string GetEnabledStatusString(bool enabled)
{
return enabled ? SR.GetString(SR.ConfigStatusEnabled) : SR.GetString(SR.ConfigStatusDiabled);
}
#endif
// We do not parse ActivityTracing in this function
internal static bool ParseSourceLevel(string levelString, out SourceLevels level)
{
level = SourceLevels.Off;
if (Utilities.SafeCompare(levelString, CommandLineOption.TracingOff))
{
level = SourceLevels.Off;
}
else if (Utilities.SafeCompare(levelString, CommandLineOption.TracingError))
{
level = SourceLevels.Error;
}
else if (Utilities.SafeCompare(levelString, CommandLineOption.TracingCritical))
{
level = SourceLevels.Critical;
}
else if (Utilities.SafeCompare(levelString, CommandLineOption.TracingWarning))
{
level = SourceLevels.Warning;
}
else if (Utilities.SafeCompare(levelString, CommandLineOption.TracingInformation))
{
level = SourceLevels.Information;
}
else if (Utilities.SafeCompare(levelString, CommandLineOption.TracingVerbose))
{
level = SourceLevels.Verbose;
}
else if (Utilities.SafeCompare(levelString, CommandLineOption.TracingAll))
{
level = SourceLevels.All;
}
else
{
return false;
}
return true;
}
internal static string LocalHostName
{
get
{
string hostName;
try
{
hostName = System.Net.Dns.GetHostName();
}
catch (System.Net.Sockets.SocketException)
{
hostName = null;
}
return hostName;
}
}
internal static bool IsLocalMachineName(string machineName)
{
const string comResDllName = "ComRes.dll";
const string englishMyComputer = "My Computer";
const int IDS_MYCOMPUTER = 1824; // resource id for My Computer in ComRes.dll
if (localizedMyComputerString == null)
{
// default value
localizedMyComputerString = englishMyComputer;
#pragma warning suppress 56523
IntPtr comResDll = SafeNativeMethods.LoadLibrary(comResDllName);
if (comResDll != IntPtr.Zero)
{
StringBuilder sb;
int len, size = 16;
do
{
sb = new StringBuilder(size);
#pragma warning suppress 56523
len = SafeNativeMethods.LoadString(comResDll, IDS_MYCOMPUTER, sb, size);
if (len > 0 && len < size)
{
localizedMyComputerString = sb.ToString();
break;
}
size *= 2;
} while (len > 0);
#pragma warning suppress 56523
SafeNativeMethods.FreeLibrary(comResDll);
}
}
return (string.IsNullOrEmpty(machineName) || SafeCompare(machineName, "localhost") ||
SafeCompare(machineName, localizedMyComputerString) || SafeCompare(machineName, LocalHostName));
}
// code from System\ServiceModel\Install\InstallUtil.cs
internal static bool IsHttpApiLibAvailable
{
get
{
if (!isHttpApiLibAvailable.HasValue)
{
isHttpApiLibAvailable = IsHttpApiLibAvailableHelper();
}
return (bool)isHttpApiLibAvailable.Value;
}
}
static bool IsHttpApiLibAvailableHelper()
{
bool retVal = false;
int retCode = SafeNativeMethods.NoError;
try
{
retCode = SafeNativeMethods.HttpInitialize(new HttpApiVersion(1, 0), SafeNativeMethods.HTTP_INITIALIZE_CONFIG, IntPtr.Zero);
SafeNativeMethods.HttpTerminate(SafeNativeMethods.HTTP_INITIALIZE_CONFIG, IntPtr.Zero);
if (retCode != SafeNativeMethods.NoError)
{
retVal = false;
}
else
{
retVal = true;
}
}
catch (System.IO.FileNotFoundException)
{
retVal = false;
}
return retVal;
}
internal static bool IsCriticalException(Exception e)
{
return (e is System.AccessViolationException) || (e is System.StackOverflowException) ||
(e is System.OutOfMemoryException) || (e is System.InvalidOperationException) ||
(e is System.Threading.ThreadAbortException);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HwndStylusInputProvider.cs
- NotSupportedException.cs
- ReferentialConstraint.cs
- DataGridHyperlinkColumn.cs
- CompilerGlobalScopeAttribute.cs
- Image.cs
- NavigatingCancelEventArgs.cs
- OleDbFactory.cs
- ResetableIterator.cs
- CodeTypeMember.cs
- Base64Decoder.cs
- FixedSOMLineRanges.cs
- PanelStyle.cs
- IDQuery.cs
- UnmanagedBitmapWrapper.cs
- ExpressionCopier.cs
- LineUtil.cs
- LoadRetryStrategyFactory.cs
- IisTraceListener.cs
- Configuration.cs
- CompositeTypefaceMetrics.cs
- BasicViewGenerator.cs
- RightsManagementPermission.cs
- GlyphRunDrawing.cs
- AbstractDataSvcMapFileLoader.cs
- CompilerCollection.cs
- Deserializer.cs
- Polygon.cs
- WebScriptServiceHostFactory.cs
- ISFClipboardData.cs
- BuildProviderUtils.cs
- CodeExporter.cs
- SqlTypeConverter.cs
- PerspectiveCamera.cs
- XdrBuilder.cs
- Attributes.cs
- WorkflowMarkupSerializerMapping.cs
- AlgoModule.cs
- InvalidCastException.cs
- DispatcherEventArgs.cs
- _ListenerRequestStream.cs
- MetadataUtil.cs
- QueryCacheEntry.cs
- InheritablePropertyChangeInfo.cs
- ClassHandlersStore.cs
- ComponentConverter.cs
- XmlAnyElementAttributes.cs
- DataPagerCommandEventArgs.cs
- InheritanceRules.cs
- Policy.cs
- FormViewPageEventArgs.cs
- FormatterServices.cs
- ControlsConfig.cs
- PropertyChangedEventManager.cs
- TextRunCacheImp.cs
- HostnameComparisonMode.cs
- TableItemPattern.cs
- CategoryAttribute.cs
- ScrollViewerAutomationPeer.cs
- HtmlElementCollection.cs
- ApplicationProxyInternal.cs
- RSAPKCS1KeyExchangeFormatter.cs
- odbcmetadatacolumnnames.cs
- DataGridViewCellMouseEventArgs.cs
- NumericUpDown.cs
- HtmlControlPersistable.cs
- InvalidProgramException.cs
- VersionedStream.cs
- CodeActivity.cs
- ProcessHost.cs
- ObjectCache.cs
- SocketStream.cs
- Image.cs
- ToolStripContentPanelRenderEventArgs.cs
- ListControl.cs
- StateBag.cs
- XmlUrlResolver.cs
- NumberFormatInfo.cs
- RpcAsyncResult.cs
- DetailsViewInsertEventArgs.cs
- UInt32Storage.cs
- NGCSerializerAsync.cs
- SecurityTokenSerializer.cs
- RegexStringValidatorAttribute.cs
- PlainXmlWriter.cs
- HopperCache.cs
- BlobPersonalizationState.cs
- DatagridviewDisplayedBandsData.cs
- ExclusiveNamedPipeTransportManager.cs
- ConnectionStringSettingsCollection.cs
- MarkupProperty.cs
- DispatcherExceptionEventArgs.cs
- XmlMapping.cs
- Cell.cs
- MSG.cs
- QueryCoreOp.cs
- recordstatefactory.cs
- ISAPIWorkerRequest.cs
- ConfigurationValue.cs
- Function.cs