Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / System / Windows / Media / ColorContextHelper.cs / 1 / 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. //------------------------------------------------------------------------------ // 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
- TransactionTraceIdentifier.cs
- ScriptServiceAttribute.cs
- FormsAuthenticationCredentials.cs
- webeventbuffer.cs
- GeometryHitTestResult.cs
- ParserStack.cs
- Pointer.cs
- BaseDataBoundControl.cs
- PropertyGroupDescription.cs
- TraceEventCache.cs
- WindowAutomationPeer.cs
- ListItemCollection.cs
- WrappedDispatcherException.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- SecurityNegotiationException.cs
- Pair.cs
- ConfigurationFileMap.cs
- UpdateTranslator.cs
- WriteFileContext.cs
- RelatedPropertyManager.cs
- FormClosedEvent.cs
- RadioButton.cs
- LockedActivityGlyph.cs
- WriteTimeStream.cs
- ErasingStroke.cs
- FacetValues.cs
- SyndicationElementExtensionCollection.cs
- IIS7WorkerRequest.cs
- XPathDocumentIterator.cs
- TypeTypeConverter.cs
- XmlArrayItemAttributes.cs
- ConfigXmlDocument.cs
- XmlDocumentSerializer.cs
- NativeMethods.cs
- IsolatedStorageFilePermission.cs
- ViewgenGatekeeper.cs
- DataGridRelationshipRow.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- ResXResourceSet.cs
- SchemaMapping.cs
- ParagraphResult.cs
- FormatSettings.cs
- ToolStripArrowRenderEventArgs.cs
- ClearTypeHintValidation.cs
- SqlLiftIndependentRowExpressions.cs
- EntitySqlQueryCacheEntry.cs
- FtpRequestCacheValidator.cs
- DelegateHelpers.Generated.cs
- SelectionListComponentEditor.cs
- ProbeMatchesMessageCD1.cs
- Int32KeyFrameCollection.cs
- ResXResourceSet.cs
- OleDbMetaDataFactory.cs
- BitmapPalettes.cs
- RangeValuePattern.cs
- TextParagraphProperties.cs
- WebPartAuthorizationEventArgs.cs
- XmlnsDefinitionAttribute.cs
- IssuanceTokenProviderBase.cs
- UIElementPropertyUndoUnit.cs
- CategoryAttribute.cs
- DescendantBaseQuery.cs
- CodeDirectoryCompiler.cs
- DiscardableAttribute.cs
- ConfigurationValue.cs
- QilSortKey.cs
- XmlCompatibilityReader.cs
- NumberSubstitution.cs
- AssertFilter.cs
- WS2007HttpBindingElement.cs
- DataGridAutoFormat.cs
- DebugView.cs
- ClientTargetCollection.cs
- SecurityTokenException.cs
- DoubleLinkList.cs
- WrappedIUnknown.cs
- Literal.cs
- PassportAuthenticationModule.cs
- AppSettingsReader.cs
- FieldAccessException.cs
- configsystem.cs
- XPathDocumentBuilder.cs
- DetailsViewModeEventArgs.cs
- ResolveNameEventArgs.cs
- DllNotFoundException.cs
- Hyperlink.cs
- UpdateProgress.cs
- QueryStack.cs
- RuleInfoComparer.cs
- ClipboardData.cs
- coordinatorscratchpad.cs
- JsonReader.cs
- ContractReference.cs
- Regex.cs
- RegisteredDisposeScript.cs
- DES.cs
- CacheSection.cs
- DeflateStream.cs
- Parallel.cs