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
- SingleTagSectionHandler.cs
- XmlProcessingInstruction.cs
- ProtocolProfile.cs
- QueryTask.cs
- SetState.cs
- WebBrowserDocumentCompletedEventHandler.cs
- TraceLog.cs
- EnvelopedPkcs7.cs
- Vector3DAnimation.cs
- ReflectionTypeLoadException.cs
- AccessDataSourceView.cs
- AlphabeticalEnumConverter.cs
- SystemPens.cs
- DateTimeUtil.cs
- CodePageUtils.cs
- StringDictionary.cs
- _Events.cs
- Point3DCollection.cs
- XmlSchemaFacet.cs
- FixedSOMTableRow.cs
- ConstantExpression.cs
- SafeMILHandle.cs
- HostedTransportConfigurationBase.cs
- ChangePassword.cs
- AssemblyResourceLoader.cs
- ToolStripSeparatorRenderEventArgs.cs
- ZipIOExtraField.cs
- HtmlForm.cs
- DbConnectionFactory.cs
- DmlSqlGenerator.cs
- Scripts.cs
- ComponentSerializationService.cs
- XmlToDatasetMap.cs
- DataTableNewRowEvent.cs
- EventBuilder.cs
- CacheEntry.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- WebPartUtil.cs
- DiscoveryUtility.cs
- HtmlInputImage.cs
- DataList.cs
- SqlDataReader.cs
- FunctionImportElement.cs
- CommandSet.cs
- EDesignUtil.cs
- SiteIdentityPermission.cs
- ConsumerConnectionPointCollection.cs
- PointAnimationClockResource.cs
- SafeNativeMemoryHandle.cs
- ConnectionManagementElement.cs
- ResolveCriteria.cs
- DataServiceBehavior.cs
- CustomTrackingRecord.cs
- TableChangeProcessor.cs
- CapiHashAlgorithm.cs
- Math.cs
- Operator.cs
- CharAnimationBase.cs
- GrammarBuilderBase.cs
- _CookieModule.cs
- Atom10FormatterFactory.cs
- DropShadowBitmapEffect.cs
- BooleanAnimationUsingKeyFrames.cs
- NativeMethods.cs
- ScrollContentPresenter.cs
- CultureMapper.cs
- InfoCardRequestException.cs
- TemplateInstanceAttribute.cs
- ObjectStateFormatter.cs
- X509ChainPolicy.cs
- TypographyProperties.cs
- SuppressIldasmAttribute.cs
- AssociatedControlConverter.cs
- CompilationSection.cs
- GenericEnumerator.cs
- SettingsAttributes.cs
- PathGeometry.cs
- UrlMapping.cs
- NestedContainer.cs
- MethodCallTranslator.cs
- DataGridViewSelectedRowCollection.cs
- ProfileInfo.cs
- OptimisticConcurrencyException.cs
- Grid.cs
- OperationResponse.cs
- ToolCreatedEventArgs.cs
- WorkflowServiceHostFactory.cs
- XmlDocumentType.cs
- Emitter.cs
- DataObjectMethodAttribute.cs
- SqlNodeAnnotations.cs
- DoubleCollection.cs
- ConnectionManagementElement.cs
- FormDocumentDesigner.cs
- WindowsListViewItemCheckBox.cs
- ContentType.cs
- GridView.cs
- QilLoop.cs
- SimpleHandlerBuildProvider.cs
- CompilationSection.cs