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
- Dynamic.cs
- TreeViewImageKeyConverter.cs
- ForceCopyBuildProvider.cs
- SettingsPropertyCollection.cs
- COAUTHIDENTITY.cs
- TextServicesProperty.cs
- Array.cs
- PartialCachingAttribute.cs
- AnnotationDocumentPaginator.cs
- HttpValueCollection.cs
- webeventbuffer.cs
- SafeRegistryKey.cs
- ObjectAnimationUsingKeyFrames.cs
- Matrix3DConverter.cs
- SafeFileMappingHandle.cs
- SQLMoney.cs
- MetadataSet.cs
- PrintPreviewGraphics.cs
- SiteMapSection.cs
- CodeSubDirectory.cs
- EncoderBestFitFallback.cs
- TemplateBindingExtension.cs
- CodeAccessSecurityEngine.cs
- RestHandlerFactory.cs
- DataGridViewRowsRemovedEventArgs.cs
- NotImplementedException.cs
- DesignerDataSourceView.cs
- ServiceOperationParameter.cs
- DefinitionUpdate.cs
- DescendantQuery.cs
- Point3DIndependentAnimationStorage.cs
- MessageProperties.cs
- UpdatePanelTrigger.cs
- XmlnsDefinitionAttribute.cs
- XmlWrappingReader.cs
- StartFileNameEditor.cs
- Attributes.cs
- InvokePatternIdentifiers.cs
- ObjectItemConventionAssemblyLoader.cs
- CommandField.cs
- UrlMappingsModule.cs
- WebPartConnectionsEventArgs.cs
- dsa.cs
- TemplateKey.cs
- DoubleCollectionValueSerializer.cs
- DisposableCollectionWrapper.cs
- CallContext.cs
- FileRegion.cs
- DecoderBestFitFallback.cs
- _CommandStream.cs
- FormParameter.cs
- HtmlInputReset.cs
- AQNBuilder.cs
- DataServiceSaveChangesEventArgs.cs
- SmiTypedGetterSetter.cs
- ProxyManager.cs
- QualificationDataAttribute.cs
- FunctionParameter.cs
- COM2TypeInfoProcessor.cs
- XmlLinkedNode.cs
- SerializeAbsoluteContext.cs
- SchemaInfo.cs
- StateBag.cs
- ChannelServices.cs
- OdbcCommandBuilder.cs
- ProfessionalColorTable.cs
- DataException.cs
- TraceListener.cs
- SqlStream.cs
- SecurityDescriptor.cs
- XmlQueryRuntime.cs
- DirectoryNotFoundException.cs
- COM2PictureConverter.cs
- DataGridCommandEventArgs.cs
- AnnotationMap.cs
- DataTableExtensions.cs
- WindowProviderWrapper.cs
- HttpWriter.cs
- Sequence.cs
- DataControlFieldCollection.cs
- ImageConverter.cs
- CollectionContainer.cs
- InstanceNotReadyException.cs
- FunctionDetailsReader.cs
- TreeViewDesigner.cs
- TimeSpan.cs
- SQlBooleanStorage.cs
- LogRestartAreaEnumerator.cs
- Font.cs
- WebBrowser.cs
- NativeBuffer.cs
- DynamicVirtualDiscoSearcher.cs
- HotSpot.cs
- TimeManager.cs
- ScopeCollection.cs
- DSASignatureFormatter.cs
- ContextMenuStrip.cs
- XmlSyndicationContent.cs
- SystemUdpStatistics.cs
- JsonEncodingStreamWrapper.cs