Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / MS / Internal / Utilities.cs / 1305600 / Utilities.cs
/**************************************************************************\ Copyright Microsoft Corporation. All Rights Reserved. \**************************************************************************/ namespace MS.Internal { using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Security; using MS.Win32; ////// General utility class for macro-type functions. /// internal static class Utilities { private static readonly Version _osVersion = Environment.OSVersion.Version; internal static bool IsOSVistaOrNewer { get { return _osVersion >= new Version(6, 0); } } internal static bool IsOSWindows7OrNewer { get { return _osVersion >= new Version(6, 1); } } internal static bool IsCompositionEnabled { ////// Critical -- calls into an unsafe native method. /// TreatAsSafe -- the call to DwmIsCompositionEnabled simply returns a boolean /// through an out parameter, it is safe information to expose /// [SecurityCritical, SecurityTreatAsSafe] get { if (!IsOSVistaOrNewer) { return false; } Int32 isDesktopCompositionEnabled = 0; UnsafeNativeMethods.HRESULT.Check(UnsafeNativeMethods.DwmIsCompositionEnabled(out isDesktopCompositionEnabled)); return isDesktopCompositionEnabled != 0; } } internal static void SafeDispose(ref T disposable) where T : IDisposable { // Dispose can safely be called on an object multiple times. IDisposable t = disposable; disposable = default(T); if (null != t) { t.Dispose(); } } /// /// Critical - Suppresses unmanaged code security. Calls Marshal.ReleaseComObject which has a LinkDemand. /// [SuppressUnmanagedCodeSecurity, SecurityCritical] internal static void SafeRelease(ref T comObject) where T : class { T t = comObject; comObject = default(T); if (null != t) { Debug.Assert(Marshal.IsComObject(t)); Marshal.ReleaseComObject(t); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. /**************************************************************************\ Copyright Microsoft Corporation. All Rights Reserved. \**************************************************************************/ namespace MS.Internal { using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Security; using MS.Win32; /// /// General utility class for macro-type functions. /// internal static class Utilities { private static readonly Version _osVersion = Environment.OSVersion.Version; internal static bool IsOSVistaOrNewer { get { return _osVersion >= new Version(6, 0); } } internal static bool IsOSWindows7OrNewer { get { return _osVersion >= new Version(6, 1); } } internal static bool IsCompositionEnabled { ////// Critical -- calls into an unsafe native method. /// TreatAsSafe -- the call to DwmIsCompositionEnabled simply returns a boolean /// through an out parameter, it is safe information to expose /// [SecurityCritical, SecurityTreatAsSafe] get { if (!IsOSVistaOrNewer) { return false; } Int32 isDesktopCompositionEnabled = 0; UnsafeNativeMethods.HRESULT.Check(UnsafeNativeMethods.DwmIsCompositionEnabled(out isDesktopCompositionEnabled)); return isDesktopCompositionEnabled != 0; } } internal static void SafeDispose(ref T disposable) where T : IDisposable { // Dispose can safely be called on an object multiple times. IDisposable t = disposable; disposable = default(T); if (null != t) { t.Dispose(); } } /// /// Critical - Suppresses unmanaged code security. Calls Marshal.ReleaseComObject which has a LinkDemand. /// [SuppressUnmanagedCodeSecurity, SecurityCritical] internal static void SafeRelease(ref T comObject) where T : class { T t = comObject; comObject = default(T); if (null != t) { Debug.Assert(Marshal.IsComObject(t)); Marshal.ReleaseComObject(t); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FamilyMapCollection.cs
- DocumentXPathNavigator.cs
- ImmutableCollection.cs
- ContainerParagraph.cs
- GridLength.cs
- InfiniteTimeSpanConverter.cs
- SamlAudienceRestrictionCondition.cs
- SearchForVirtualItemEventArgs.cs
- ChannelFactory.cs
- ArrowControl.xaml.cs
- SqlTypeConverter.cs
- EncodingTable.cs
- HtmlTable.cs
- WindowsMenu.cs
- LayoutSettings.cs
- EmptyEnumerable.cs
- TextPattern.cs
- SqlBulkCopy.cs
- ComplexLine.cs
- CodePageUtils.cs
- FigureParaClient.cs
- RoutedEventArgs.cs
- GridViewRowCollection.cs
- SessionState.cs
- EventLogPermission.cs
- PageClientProxyGenerator.cs
- SynchronizationContext.cs
- FixedHighlight.cs
- ProcessHost.cs
- HasCopySemanticsAttribute.cs
- Properties.cs
- PrintDialog.cs
- CustomSignedXml.cs
- ServiceParser.cs
- ErrorStyle.cs
- PresentationSource.cs
- DictionaryTraceRecord.cs
- HashJoinQueryOperatorEnumerator.cs
- BoundField.cs
- FullTrustAssembliesSection.cs
- Missing.cs
- StringAnimationUsingKeyFrames.cs
- COM2PropertyDescriptor.cs
- XmlElementAttributes.cs
- LinearKeyFrames.cs
- AppDomainFactory.cs
- ExeContext.cs
- CompareInfo.cs
- Profiler.cs
- SplashScreen.cs
- MatrixIndependentAnimationStorage.cs
- UrlAuthorizationModule.cs
- X509Chain.cs
- MSAANativeProvider.cs
- EntityDataSourceContextCreatingEventArgs.cs
- SubpageParaClient.cs
- DataGridRelationshipRow.cs
- UnsafeMethods.cs
- StyleModeStack.cs
- CompositeControlDesigner.cs
- ConfigViewGenerator.cs
- BindingCollection.cs
- BuildManager.cs
- DoWorkEventArgs.cs
- KnownTypes.cs
- CompiledIdentityConstraint.cs
- StsCommunicationException.cs
- precedingsibling.cs
- DataExchangeServiceBinder.cs
- HScrollBar.cs
- ErrorFormatterPage.cs
- XmlDeclaration.cs
- BrowserInteropHelper.cs
- DesignerVerb.cs
- MouseEventArgs.cs
- BufferedOutputStream.cs
- EncryptedReference.cs
- DragDropManager.cs
- SmiMetaData.cs
- TextProperties.cs
- HebrewCalendar.cs
- StringSource.cs
- ParallelTimeline.cs
- Margins.cs
- TimerElapsedEvenArgs.cs
- DetailsViewUpdateEventArgs.cs
- TextEffectResolver.cs
- filewebrequest.cs
- ComponentEditorPage.cs
- DataGridViewCellValidatingEventArgs.cs
- TimeoutException.cs
- ScriptControl.cs
- FontStretch.cs
- TextPointerBase.cs
- EntityDataSourceChangingEventArgs.cs
- ErrorBehavior.cs
- XslAstAnalyzer.cs
- StreamResourceInfo.cs
- sqlmetadatafactory.cs
- ThreadAttributes.cs