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
- BitmapDecoder.cs
- ObjectListSelectEventArgs.cs
- recordstatescratchpad.cs
- CatalogZoneBase.cs
- SchemaReference.cs
- PropertyMappingExceptionEventArgs.cs
- XPathDocument.cs
- AutomationPropertyInfo.cs
- RoutingService.cs
- LabelLiteral.cs
- PropertyStore.cs
- Nullable.cs
- FixedSOMTableCell.cs
- CaseInsensitiveHashCodeProvider.cs
- BuildManager.cs
- InstanceDescriptor.cs
- UnsafeMethods.cs
- PackWebRequest.cs
- WebContext.cs
- TextBoxDesigner.cs
- RuleSettings.cs
- WebPartAddingEventArgs.cs
- DependencyPropertyValueSerializer.cs
- HelloOperationAsyncResult.cs
- AutomationAttributeInfo.cs
- TextShapeableCharacters.cs
- GraphicsContext.cs
- ScrollBarRenderer.cs
- PenCursorManager.cs
- PolyBezierSegmentFigureLogic.cs
- DropShadowBitmapEffect.cs
- SimpleExpression.cs
- ZoomPercentageConverter.cs
- CheckBox.cs
- Pen.cs
- EnumConverter.cs
- RelatedPropertyManager.cs
- SqlConnectionManager.cs
- KnownTypesProvider.cs
- _SpnDictionary.cs
- Panel.cs
- WorkflowStateRollbackService.cs
- EntityTypeBase.cs
- TextPatternIdentifiers.cs
- BrowserCapabilitiesCodeGenerator.cs
- Int32.cs
- Regex.cs
- EntitySetBase.cs
- FileDialogCustomPlacesCollection.cs
- InvokeProviderWrapper.cs
- ThaiBuddhistCalendar.cs
- Soap.cs
- ProviderConnectionPoint.cs
- AbstractSvcMapFileLoader.cs
- XmlDocumentFragment.cs
- MinMaxParagraphWidth.cs
- ValidatingPropertiesEventArgs.cs
- ObjectListCommandEventArgs.cs
- Itemizer.cs
- TimeSpanConverter.cs
- OutOfProcStateClientManager.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- PeerIPHelper.cs
- ProfilePropertyNameValidator.cs
- SharedStatics.cs
- BooleanToVisibilityConverter.cs
- HtmlForm.cs
- SkinBuilder.cs
- RegisterInfo.cs
- BlobPersonalizationState.cs
- ImageField.cs
- TypedRowGenerator.cs
- RegexStringValidator.cs
- DES.cs
- NetworkStream.cs
- SystemParameters.cs
- Figure.cs
- GridViewColumnHeader.cs
- TextEffectCollection.cs
- DocumentPaginator.cs
- IndexOutOfRangeException.cs
- SymDocumentType.cs
- WpfGeneratedKnownTypes.cs
- MemberInfoSerializationHolder.cs
- DesignBindingPicker.cs
- KeyNotFoundException.cs
- UnicodeEncoding.cs
- XmlEntity.cs
- Win32.cs
- ToolZone.cs
- ToolStripScrollButton.cs
- CacheMemory.cs
- FileAuthorizationModule.cs
- ObjectDataSourceDisposingEventArgs.cs
- XAMLParseException.cs
- BaseDataListComponentEditor.cs
- NameGenerator.cs
- CodeDirectiveCollection.cs
- PolicyStatement.cs
- AccessDataSourceView.cs