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
- StylusPointProperty.cs
- IMembershipProvider.cs
- SelectionProcessor.cs
- QueryStringParameter.cs
- HierarchicalDataBoundControlAdapter.cs
- RecognizeCompletedEventArgs.cs
- AspNetHostingPermission.cs
- TypeUnloadedException.cs
- NumericUpDownAccelerationCollection.cs
- WmlCalendarAdapter.cs
- TemplatedWizardStep.cs
- SystemTcpConnection.cs
- InvalidOperationException.cs
- SmtpClient.cs
- UnauthorizedAccessException.cs
- LateBoundBitmapDecoder.cs
- TextBox.cs
- UnaryExpressionHelper.cs
- FileDialog.cs
- XmlValueConverter.cs
- SqlMethodAttribute.cs
- HwndStylusInputProvider.cs
- DesignerAttribute.cs
- LightweightCodeGenerator.cs
- GetWinFXPath.cs
- RootBrowserWindow.cs
- BmpBitmapDecoder.cs
- WebPartConnectionCollection.cs
- SimpleParser.cs
- NominalTypeEliminator.cs
- FixedSOMPageConstructor.cs
- ChildChangedEventArgs.cs
- IndexedString.cs
- CodeDOMUtility.cs
- ApplicationServicesHostFactory.cs
- IChannel.cs
- StaticTextPointer.cs
- ServiceBehaviorElementCollection.cs
- ContainerSelectorActiveEvent.cs
- XamlReader.cs
- FileVersion.cs
- HealthMonitoringSection.cs
- PostBackOptions.cs
- SizeValueSerializer.cs
- XmlReader.cs
- XmlSchemaComplexContentRestriction.cs
- ApplicationSecurityInfo.cs
- Geometry.cs
- ChangePasswordDesigner.cs
- OleDbPropertySetGuid.cs
- AnonymousIdentificationModule.cs
- ErrorProvider.cs
- DataObjectPastingEventArgs.cs
- ContainerFilterService.cs
- PropertyNames.cs
- MetadataArtifactLoaderCompositeResource.cs
- FileDialog_Vista.cs
- LiteralControl.cs
- MimeFormReflector.cs
- TextRunCache.cs
- RelationshipNavigation.cs
- FlowLayoutSettings.cs
- PriorityItem.cs
- SemanticResultKey.cs
- CollectionViewProxy.cs
- DashStyle.cs
- RTLAwareMessageBox.cs
- PathTooLongException.cs
- HtmlTextArea.cs
- WebPartCatalogCloseVerb.cs
- XamlPoint3DCollectionSerializer.cs
- DataSourceIDConverter.cs
- ImageListImageEditor.cs
- StrokeNodeData.cs
- RowType.cs
- HostSecurityManager.cs
- X509ServiceCertificateAuthenticationElement.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- ServerProtocol.cs
- PageRanges.cs
- RegistryPermission.cs
- EncoderReplacementFallback.cs
- ItemsPanelTemplate.cs
- ArglessEventHandlerProxy.cs
- DeferredElementTreeState.cs
- ExecutedRoutedEventArgs.cs
- ServiceManagerHandle.cs
- UiaCoreApi.cs
- DirectoryGroupQuery.cs
- DynamicExpression.cs
- DbModificationCommandTree.cs
- AttributeQuery.cs
- ColumnClickEvent.cs
- Translator.cs
- Button.cs
- DesignerActionService.cs
- DataSourceControlBuilder.cs
- ComponentEvent.cs
- XmlIlTypeHelper.cs
- SafeUserTokenHandle.cs