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
- StorageMappingItemLoader.cs
- DataGridViewLinkColumn.cs
- SaveWorkflowAsyncResult.cs
- IndicShape.cs
- X509ThumbprintKeyIdentifierClause.cs
- VoiceObjectToken.cs
- AppDomainManager.cs
- SyndicationFeedFormatter.cs
- MsmqInputSessionChannelListener.cs
- QualifiedCellIdBoolean.cs
- Error.cs
- SynchronizedDispatch.cs
- DataServiceStreamProviderWrapper.cs
- NativeWindow.cs
- WebBrowserDesigner.cs
- ServiceHttpModule.cs
- HttpResponse.cs
- ParallelTimeline.cs
- HttpChannelBindingToken.cs
- KeyEventArgs.cs
- DbProviderFactory.cs
- HighlightComponent.cs
- SharedPerformanceCounter.cs
- BitSet.cs
- sqlpipe.cs
- PropertyEntry.cs
- FlowDocumentView.cs
- MenuCommands.cs
- ImageSourceValueSerializer.cs
- Size3D.cs
- IteratorDescriptor.cs
- ArraySubsetEnumerator.cs
- XmlReaderSettings.cs
- MatrixTransform.cs
- DataFormats.cs
- TextRangeEdit.cs
- XmlSchemaSequence.cs
- RenderingEventArgs.cs
- UserNameSecurityTokenProvider.cs
- TreeNodeCollectionEditor.cs
- LocalFileSettingsProvider.cs
- PointCollection.cs
- WebPartTransformerCollection.cs
- SingletonInstanceContextProvider.cs
- SHA1.cs
- SoapInteropTypes.cs
- DefaultTextStoreTextComposition.cs
- DeflateStream.cs
- DataGridCell.cs
- WebEventTraceProvider.cs
- BitmapCodecInfoInternal.cs
- FlowPanelDesigner.cs
- WebPartConnectionsEventArgs.cs
- PromptBuilder.cs
- PenCursorManager.cs
- ProfileBuildProvider.cs
- SchemaElementLookUpTableEnumerator.cs
- ShaderEffect.cs
- GraphicsContainer.cs
- AssertFilter.cs
- SqlDataReader.cs
- ServiceObjectContainer.cs
- WebPartRestoreVerb.cs
- DataServiceHost.cs
- OdbcUtils.cs
- Variable.cs
- SerializationSectionGroup.cs
- WpfKnownMemberInvoker.cs
- RepeaterItemEventArgs.cs
- ActivityDesignerResources.cs
- ScalarRestriction.cs
- BitmapEffectrendercontext.cs
- ClassicBorderDecorator.cs
- OrderByExpression.cs
- MsdtcWrapper.cs
- NativeMethods.cs
- BufferModeSettings.cs
- URLString.cs
- ChtmlMobileTextWriter.cs
- PageContentAsyncResult.cs
- MouseCaptureWithinProperty.cs
- ValidationErrorEventArgs.cs
- MediaContextNotificationWindow.cs
- DataConnectionHelper.cs
- BeginEvent.cs
- DynamicRenderer.cs
- XmlIncludeAttribute.cs
- DbFunctionCommandTree.cs
- HtmlLink.cs
- TraceContext.cs
- XPathAxisIterator.cs
- Selection.cs
- ProfileElement.cs
- HtmlGenericControl.cs
- SelectionItemPattern.cs
- Int32KeyFrameCollection.cs
- MexHttpsBindingCollectionElement.cs
- CookieHandler.cs
- SudsWriter.cs
- BitmapSizeOptions.cs