Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Media / Imaging / InplaceBitmapMetadataWriter.cs / 1 / InplaceBitmapMetadataWriter.cs
//------------------------------------------------------------------------------ // Microsoft Avalon // Copyright (c) Microsoft Corporation, All Rights Reserved // // File: InPlaceBitmapMetadataWriter.cs // //----------------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Reflection; using MS.Internal; using MS.Win32.PresentationCore; using System.Diagnostics; using System.Globalization; using System.Runtime.InteropServices; using System.Xml; using System.IO; using System.Security; using System.Security.Permissions; using System.Windows.Media.Imaging; using System.Windows.Threading; using System.Text; using MS.Internal.PresentationCore; // SecurityHelper namespace System.Windows.Media.Imaging { #region InPlaceBitmapMetadataWriter ////// Metadata Class for BitmapImage. /// sealed public partial class InPlaceBitmapMetadataWriter : BitmapMetadata { #region Constructors ////// /// private InPlaceBitmapMetadataWriter() { } ////// /// ////// Critical - Accesses critical resources /// [SecurityCritical] internal InPlaceBitmapMetadataWriter( SafeMILHandle /* IWICFastMetadataEncoder */ fmeHandle, SafeMILHandle /* IWICMetadataQueryWriter */ metadataHandle, object syncObject ) : base(metadataHandle, false, false, syncObject) { _fmeHandle = fmeHandle; } ////// /// ////// Critical - Accesses unmanaged code /// TreatAsSafe - inputs are verified or safe /// [SecurityCritical, SecurityTreatAsSafe] static internal InPlaceBitmapMetadataWriter CreateFromFrameDecode(BitmapSourceSafeMILHandle frameHandle, object syncObject) { Invariant.Assert(frameHandle != null); SafeMILHandle /* IWICFastMetadataEncoder */ fmeHandle = null; SafeMILHandle /* IWICMetadataQueryWriter */ metadataHandle = null; using (FactoryMaker factoryMaker = new FactoryMaker()) { lock (syncObject) { HRESULT.Check(UnsafeNativeMethods.WICImagingFactory.CreateFastMetadataEncoderFromFrameDecode( factoryMaker.ImagingFactoryPtr, frameHandle, out fmeHandle)); } } HRESULT.Check(UnsafeNativeMethods.WICFastMetadataEncoder.GetMetadataQueryWriter( fmeHandle, out metadataHandle)); return new InPlaceBitmapMetadataWriter(fmeHandle, metadataHandle, syncObject); } ////// /// ////// Critical - Accesses unmanaged code /// TreatAsSafe - inputs are verified or safe /// [SecurityCritical, SecurityTreatAsSafe] static internal InPlaceBitmapMetadataWriter CreateFromDecoder(SafeMILHandle decoderHandle, object syncObject) { Invariant.Assert(decoderHandle != null); SafeMILHandle /* IWICFastMetadataEncoder */ fmeHandle = null; SafeMILHandle /* IWICMetadataQueryWriter */ metadataHandle = null; using (FactoryMaker factoryMaker = new FactoryMaker()) { lock (syncObject) { HRESULT.Check(UnsafeNativeMethods.WICImagingFactory.CreateFastMetadataEncoderFromDecoder( factoryMaker.ImagingFactoryPtr, decoderHandle, out fmeHandle)); } } HRESULT.Check(UnsafeNativeMethods.WICFastMetadataEncoder.GetMetadataQueryWriter( fmeHandle, out metadataHandle)); return new InPlaceBitmapMetadataWriter(fmeHandle, metadataHandle, syncObject); } ////// /// ////// Critical - Accesses unmanaged code /// PublicOK - inputs are verified or safe /// [SecurityCritical ] public bool TrySave() { int hr; Invariant.Assert(_fmeHandle != null); lock (SyncObject) { hr = UnsafeNativeMethods.WICFastMetadataEncoder.Commit(_fmeHandle); } return HRESULT.Succeeded(hr); } #endregion #region Freezable ////// Shadows inherited Copy() with a strongly typed /// version for convenience. /// public new InPlaceBitmapMetadataWriter Clone() { return (InPlaceBitmapMetadataWriter)base.Clone(); } ////// Implementation of ///Freezable.CreateInstanceCore . ///The new Freezable. protected override Freezable CreateInstanceCore() { throw new InvalidOperationException(SR.Get(SRID.Image_InplaceMetadataNoCopy)); } ////// Implementation of protected override void CloneCore(Freezable sourceFreezable) { throw new InvalidOperationException(SR.Get(SRID.Image_InplaceMetadataNoCopy)); } ///Freezable.CloneCore . ////// Implementation of protected override void CloneCurrentValueCore(Freezable sourceFreezable) { throw new InvalidOperationException(SR.Get(SRID.Image_InplaceMetadataNoCopy)); } ///Freezable.CloneCurrentValueCore . ////// Implementation of protected override void GetAsFrozenCore(Freezable sourceFreezable) { throw new InvalidOperationException(SR.Get(SRID.Image_InplaceMetadataNoCopy)); } ///Freezable.GetAsFrozenCore . ////// Implementation of protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { throw new InvalidOperationException(SR.Get(SRID.Image_InplaceMetadataNoCopy)); } #endregion ///Freezable.GetCurrentValueAsFrozenCore . ////// Critical - pointer to an unmanaged object that methods are called on. /// [SecurityCritical] private SafeMILHandle _fmeHandle; } #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
- MultiSelectRootGridEntry.cs
- BindingWorker.cs
- Matrix.cs
- CuspData.cs
- ObjectConverter.cs
- CodeTypeReference.cs
- BrowserCapabilitiesCompiler.cs
- MSAAWinEventWrap.cs
- PagePropertiesChangingEventArgs.cs
- RegexGroup.cs
- StringAttributeCollection.cs
- HttpPostProtocolReflector.cs
- RowUpdatedEventArgs.cs
- SessionParameter.cs
- WebPart.cs
- ExpressionHelper.cs
- BamlBinaryReader.cs
- CustomLineCap.cs
- ResourceType.cs
- OleDbError.cs
- SystemDropShadowChrome.cs
- EnumerableCollectionView.cs
- PropertyPath.cs
- ServiceMemoryGates.cs
- WebPartMenu.cs
- NodeFunctions.cs
- XmlNavigatorStack.cs
- DiffuseMaterial.cs
- LineSegment.cs
- ListViewInsertedEventArgs.cs
- RealProxy.cs
- DoubleCollection.cs
- Choices.cs
- RegexCompilationInfo.cs
- MenuScrollingVisibilityConverter.cs
- ICollection.cs
- CodeAttributeDeclaration.cs
- StreamGeometry.cs
- SpecialNameAttribute.cs
- XmlWhitespace.cs
- EnlistmentState.cs
- SelectionEditingBehavior.cs
- RuntimeIdentifierPropertyAttribute.cs
- TableHeaderCell.cs
- CroppedBitmap.cs
- SchemaMapping.cs
- DataGridViewCellMouseEventArgs.cs
- AspCompat.cs
- XmlReflectionImporter.cs
- CompositeFontFamily.cs
- SimplePropertyEntry.cs
- Delegate.cs
- MessageQueueTransaction.cs
- CompilerHelpers.cs
- PackageDigitalSignature.cs
- DependencyPropertyKind.cs
- TextTabProperties.cs
- ParagraphVisual.cs
- XPathBinder.cs
- BinaryNode.cs
- ClientConfigurationHost.cs
- DataGridViewSortCompareEventArgs.cs
- CompilationLock.cs
- TraceContextEventArgs.cs
- DiagnosticsConfiguration.cs
- UIElementCollection.cs
- DataTemplate.cs
- GradientBrush.cs
- ValueSerializerAttribute.cs
- PageThemeParser.cs
- AttributeProviderAttribute.cs
- ServiceTimeoutsElement.cs
- ComplexTypeEmitter.cs
- Pens.cs
- Fonts.cs
- NetworkStream.cs
- ObjectStorage.cs
- Bits.cs
- ExtensibleClassFactory.cs
- ObjectContextServiceProvider.cs
- BaseInfoTable.cs
- GridLength.cs
- HostingEnvironmentSection.cs
- WindowsStatusBar.cs
- ObjectSet.cs
- FormsAuthenticationUser.cs
- NetSectionGroup.cs
- CodeArgumentReferenceExpression.cs
- CounterSampleCalculator.cs
- ListMarkerSourceInfo.cs
- ApplicationDirectoryMembershipCondition.cs
- SQLMoneyStorage.cs
- BaseDataList.cs
- SelectionRange.cs
- IsolatedStorageFile.cs
- SendMailErrorEventArgs.cs
- EditorPartChrome.cs
- CrossSiteScriptingValidation.cs
- AnimationTimeline.cs
- StrongNameUtility.cs