Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Media / ColorContextHelper.cs / 2 / ColorContextHelper.cs
//------------------------------------------------------------------------------ // Microsoft Windows Client Platform // Copyright (c) Microsoft Corporation, 2001, 2002, 2003 // // File: ColorContextHelper.cs //----------------------------------------------------------------------------- using System; using System.IO; using System.Runtime.InteropServices; using System.Windows.Media; using System.Windows.Media.Imaging; using MS.Internal; using MS.Win32; using System.Security; using System.Security.Permissions; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Reflection; using System.Diagnostics; using System.Globalization; using Microsoft.Win32.SafeHandles; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; using UnsafeNativeMethods=MS.Win32.PresentationCore.UnsafeNativeMethods; namespace System.Windows.Media { #region SafeProfileHandle internal class SafeProfileHandle : SafeHandleZeroOrMinusOneIsInvalid { ////// Use this constructor if the handle exists at construction time. /// ////// Critical: The ctor of the base class requires SecurityPermission /// [SecurityCritical] internal SafeProfileHandle() : base(true) { } ////// Use this constructor if the handle exists at construction time. /// ////// Critical: The ctor of the base class requires SecurityPermission /// This code calls SetHandle /// [SecurityCritical] internal SafeProfileHandle(IntPtr profile) : base(true) { SetHandle(profile); } ////// Critical - calls unmanaged code, not treat as safe because you must /// validate that handle is a valid color context handle. /// [SecurityCritical] protected override bool ReleaseHandle() { if (!UnsafeNativeMethods.Mscms.CloseColorProfile(handle)) { HRESULT.Check(Marshal.GetHRForLastWin32Error()); } return true; } } #endregion #region ColorContextHelper ////// Class to call into MSCMS color context APIs /// internal class ColorContextHelper { /// Constructor internal ColorContextHelper() { } /// Opens a color profile ////// SecurityCritical: Calls unmanaged code, accepts InPtr/unverified data. /// [SecurityCritical] internal void OpenColorProfile(IntPtr pProfile) { // No need to get rid of the old handle as it will get GC'ed _profileHandle = UnsafeNativeMethods.Mscms.OpenColorProfile( pProfile, NativeMethods.PROFILE_READ, // DesiredAccess NativeMethods.FILE_SHARE_READ, // ShareMode NativeMethods.OPEN_EXISTING // CreationMode ); if (_profileHandle == null || _profileHandle.IsInvalid) { HRESULT.Check(Marshal.GetHRForLastWin32Error()); } } /// Retrieves the profile header ////// SecurityCritical: Calls unmanaged code, accepts InPtr/unverified data. /// [SecurityCritical] internal void GetColorProfileHeader(IntPtr pHeader) { if (_profileHandle == null || _profileHandle.IsInvalid) { throw new InvalidOperationException(SR.Get(SRID.Image_ColorContextInvalid)); } HRESULT.Check(UnsafeNativeMethods.Mscms.GetColorProfileHeader(_profileHandle, pHeader)); } /// Retrieves the color profile from handle ////// SecurityCritical: Calls unmanaged code, accepts InPtr/unverified data. /// [SecurityCritical] internal void GetColorProfileFromHandle(IntPtr pBuffer, IntPtr pdwSize) { if (_profileHandle == null || _profileHandle.IsInvalid) { throw new InvalidOperationException(SR.Get(SRID.Image_ColorContextInvalid)); } HRESULT.Check(UnsafeNativeMethods.Mscms.GetColorProfileFromHandle(_profileHandle, pBuffer, pdwSize)); } ////// Critical - Accesses critical resource _profileHandle /// TreatAsSafe - No inputs and just checks if SafeHandle is valid or not. /// internal bool IsInvalid { [SecurityCritical, SecurityTreatAsSafe] get { return (_profileHandle == null || _profileHandle.IsInvalid); } } ////// ProfileHandle /// ////// SecurityCritical: This comes out of an elevation needs to be critical and tracked. /// internal SafeProfileHandle ProfileHandle { [SecurityCritical] get { return _profileHandle; } } #region Data members ////// SecurityCritical: This comes out of an elevation needs to be critical and tracked. /// [SecurityCritical] SafeProfileHandle _profileHandle; #endregion } #endregion } // 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
- mongolianshape.cs
- Quaternion.cs
- SerializationInfoEnumerator.cs
- CheckBoxPopupAdapter.cs
- SchemaElementDecl.cs
- NetStream.cs
- ToolStripContainerDesigner.cs
- EncoderExceptionFallback.cs
- WorkflowTransactionService.cs
- ConfigXmlText.cs
- MetadataArtifactLoader.cs
- LocalTransaction.cs
- QilScopedVisitor.cs
- XamlInt32CollectionSerializer.cs
- AnnotationAuthorChangedEventArgs.cs
- DiscoveryClientReferences.cs
- ExpressionEvaluator.cs
- WindowsEditBox.cs
- Size.cs
- ServiceControllerDesigner.cs
- HTMLTagNameToTypeMapper.cs
- QueryAccessibilityHelpEvent.cs
- ArrangedElementCollection.cs
- XmlSecureResolver.cs
- IssuedTokenParametersElement.cs
- UserNamePasswordValidator.cs
- ConfigurationStrings.cs
- UdpTransportSettings.cs
- BinaryUtilClasses.cs
- InputLanguageManager.cs
- TypeUsageBuilder.cs
- LineInfo.cs
- CompositeKey.cs
- SerializationException.cs
- SqlInternalConnectionSmi.cs
- NavigationWindowAutomationPeer.cs
- ComponentCodeDomSerializer.cs
- PolicyStatement.cs
- OuterGlowBitmapEffect.cs
- SchemaImporterExtensionElement.cs
- ReadOnlyMetadataCollection.cs
- RelationshipConverter.cs
- XPathMessageFilterElementCollection.cs
- StylusPointPropertyUnit.cs
- SmtpFailedRecipientsException.cs
- SQLBinary.cs
- CqlParser.cs
- DnsPermission.cs
- CustomSignedXml.cs
- figurelengthconverter.cs
- CssStyleCollection.cs
- NativeMethods.cs
- isolationinterop.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- HtmlInputSubmit.cs
- GroupBox.cs
- SineEase.cs
- XamlTreeBuilderBamlRecordWriter.cs
- entitydatasourceentitysetnameconverter.cs
- SqlTransaction.cs
- Utilities.cs
- AsyncOperation.cs
- XmlnsCache.cs
- DataBinder.cs
- Timer.cs
- printdlgexmarshaler.cs
- NativeBuffer.cs
- TypeToken.cs
- CollectionEditVerbManager.cs
- TargetParameterCountException.cs
- IProvider.cs
- ListViewAutomationPeer.cs
- CollectionConverter.cs
- SqlMetaData.cs
- SingleAnimation.cs
- HitTestParameters.cs
- StronglyTypedResourceBuilder.cs
- SimpleType.cs
- TableLayoutStyleCollection.cs
- DockPattern.cs
- GuidConverter.cs
- OracleParameterCollection.cs
- RijndaelManagedTransform.cs
- SqlRetyper.cs
- TextTabProperties.cs
- PrincipalPermissionMode.cs
- AttachedPropertyMethodSelector.cs
- GridViewUpdateEventArgs.cs
- BuildManager.cs
- CharEnumerator.cs
- HWStack.cs
- MonitorWrapper.cs
- sqlinternaltransaction.cs
- StringDictionary.cs
- DES.cs
- BadImageFormatException.cs
- HttpListenerPrefixCollection.cs
- FileLoadException.cs
- SQLResource.cs
- NavigationCommands.cs