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
- PassportAuthentication.cs
- TemplateBamlRecordReader.cs
- HtmlSelect.cs
- DragDrop.cs
- Panel.cs
- AliasExpr.cs
- CheckBoxField.cs
- QilLiteral.cs
- PropertyPathWorker.cs
- DetailsViewRowCollection.cs
- TableLayoutSettings.cs
- ObjectAssociationEndMapping.cs
- SplitterPanel.cs
- x509store.cs
- IteratorDescriptor.cs
- SpellerStatusTable.cs
- ConstructorBuilder.cs
- CannotUnloadAppDomainException.cs
- _SslSessionsCache.cs
- OdbcEnvironment.cs
- DocumentScope.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- FamilyTypefaceCollection.cs
- LinearGradientBrush.cs
- BoolExpressionVisitors.cs
- XLinq.cs
- TokenBasedSet.cs
- ToolboxComponentsCreatedEventArgs.cs
- Section.cs
- PreProcessor.cs
- Exceptions.cs
- AcceptorSessionSymmetricMessageSecurityProtocol.cs
- EmptyControlCollection.cs
- XPathSingletonIterator.cs
- InputReportEventArgs.cs
- ThemeDirectoryCompiler.cs
- RecordManager.cs
- Pts.cs
- ParamArrayAttribute.cs
- Crc32Helper.cs
- EntityDataSourceChangedEventArgs.cs
- UriTemplateDispatchFormatter.cs
- GenerateTemporaryAssemblyTask.cs
- _KerberosClient.cs
- DataColumnSelectionConverter.cs
- AsnEncodedData.cs
- GuidelineSet.cs
- ResourcePermissionBase.cs
- HostSecurityManager.cs
- QueryableDataSourceEditData.cs
- SqlDelegatedTransaction.cs
- CaseInsensitiveComparer.cs
- BitmapEffectvisualstate.cs
- ResourceIDHelper.cs
- Int32EqualityComparer.cs
- ExponentialEase.cs
- ServiceModelConfigurationElementCollection.cs
- SystemIPv6InterfaceProperties.cs
- SourceElementsCollection.cs
- WindowsListViewGroup.cs
- DataStreamFromComStream.cs
- FixedSOMLineRanges.cs
- templategroup.cs
- DashStyle.cs
- DirectoryNotFoundException.cs
- CodeVariableDeclarationStatement.cs
- EventLogRecord.cs
- CheckBoxList.cs
- Instrumentation.cs
- MetadataPropertyAttribute.cs
- SwitchLevelAttribute.cs
- TransactedBatchContext.cs
- SubqueryTrackingVisitor.cs
- DbException.cs
- querybuilder.cs
- XmlQueryContext.cs
- isolationinterop.cs
- WindowsImpersonationContext.cs
- DictionaryContent.cs
- Transform3DCollection.cs
- FormViewUpdateEventArgs.cs
- XamlPoint3DCollectionSerializer.cs
- Component.cs
- DetailsViewDeletedEventArgs.cs
- CertificateManager.cs
- FreezableDefaultValueFactory.cs
- DatePickerAutomationPeer.cs
- TemplateBuilder.cs
- PreviewKeyDownEventArgs.cs
- InheritedPropertyChangedEventArgs.cs
- WebPartConnectionsCancelVerb.cs
- WebException.cs
- Ipv6Element.cs
- InternalUserCancelledException.cs
- RegistryConfigurationProvider.cs
- _SSPIWrapper.cs
- DataSetMappper.cs
- XmlSchema.cs
- PrimitiveType.cs
- HuffCodec.cs