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
- BookmarkUndoUnit.cs
- InternalReceiveMessage.cs
- ParameterModifier.cs
- BaseParser.cs
- AssemblyCache.cs
- PackageRelationshipSelector.cs
- PenThreadWorker.cs
- EngineSite.cs
- RangeValueProviderWrapper.cs
- FactoryId.cs
- HitTestParameters.cs
- AxParameterData.cs
- ObjectDataSourceDisposingEventArgs.cs
- MailWebEventProvider.cs
- SystemFonts.cs
- TouchesCapturedWithinProperty.cs
- SuppressMergeCheckAttribute.cs
- MultipleViewPatternIdentifiers.cs
- AuthorizationRuleCollection.cs
- HierarchicalDataBoundControl.cs
- TextViewDesigner.cs
- RangeBaseAutomationPeer.cs
- ValidationPropertyAttribute.cs
- CustomAttributeBuilder.cs
- StorageEndPropertyMapping.cs
- ArcSegment.cs
- SecUtil.cs
- Binding.cs
- XmlMembersMapping.cs
- SspiNegotiationTokenProviderState.cs
- SimpleType.cs
- DrawTreeNodeEventArgs.cs
- Transform3D.cs
- BindingSource.cs
- QueryContinueDragEventArgs.cs
- TabControlDesigner.cs
- SchemaTypeEmitter.cs
- SqlFactory.cs
- ConditionalAttribute.cs
- BreakSafeBase.cs
- SchemaTableOptionalColumn.cs
- xsdvalidator.cs
- DetailsViewRow.cs
- Int64KeyFrameCollection.cs
- DesignerWithHeader.cs
- SizeFConverter.cs
- CodePropertyReferenceExpression.cs
- DesignerCategoryAttribute.cs
- XmlDocumentFragment.cs
- EmbeddedMailObjectCollectionEditor.cs
- HttpBufferlessInputStream.cs
- TrackingConditionCollection.cs
- WindowProviderWrapper.cs
- QilCloneVisitor.cs
- MessageQueueKey.cs
- CollectionViewGroupRoot.cs
- WpfKnownType.cs
- BrushValueSerializer.cs
- ListControlBuilder.cs
- TemplatedAdorner.cs
- DependencyObject.cs
- SchemaImporterExtensionElementCollection.cs
- CodeDefaultValueExpression.cs
- QueryOutputWriter.cs
- TouchesCapturedWithinProperty.cs
- Rule.cs
- RadioButtonPopupAdapter.cs
- DataPagerFieldCollection.cs
- NetSectionGroup.cs
- CodeIdentifiers.cs
- BevelBitmapEffect.cs
- mil_sdk_version.cs
- TimeSpanConverter.cs
- AxHost.cs
- CodeTypeDelegate.cs
- EnumUnknown.cs
- AuthenticateEventArgs.cs
- returneventsaver.cs
- TimelineCollection.cs
- EndOfStreamException.cs
- PackageStore.cs
- HttpListenerResponse.cs
- ScriptServiceAttribute.cs
- CodeTypeReferenceExpression.cs
- MappingException.cs
- _LocalDataStore.cs
- SqlFunctionAttribute.cs
- NotFiniteNumberException.cs
- UInt32Converter.cs
- TransformGroup.cs
- MessageDesigner.cs
- ContentWrapperAttribute.cs
- LayoutTable.cs
- TransactionProtocolConverter.cs
- ListDictionary.cs
- CompatibleIComparer.cs
- DigestTraceRecordHelper.cs
- Margins.cs
- DisplayMemberTemplateSelector.cs
- XmlSchemaDocumentation.cs