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 Freezable.CloneCore .
///
protected override void CloneCore(Freezable sourceFreezable)
{
throw new InvalidOperationException(SR.Get(SRID.Image_InplaceMetadataNoCopy));
}
///
/// Implementation of Freezable.CloneCurrentValueCore .
///
protected override void CloneCurrentValueCore(Freezable sourceFreezable)
{
throw new InvalidOperationException(SR.Get(SRID.Image_InplaceMetadataNoCopy));
}
///
/// Implementation of Freezable.GetAsFrozenCore .
///
protected override void GetAsFrozenCore(Freezable sourceFreezable)
{
throw new InvalidOperationException(SR.Get(SRID.Image_InplaceMetadataNoCopy));
}
///
/// Implementation of Freezable.GetCurrentValueAsFrozenCore .
///
protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable)
{
throw new InvalidOperationException(SR.Get(SRID.Image_InplaceMetadataNoCopy));
}
#endregion
///
/// 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
- AxHostDesigner.cs
- Utilities.cs
- ScriptModule.cs
- HttpApplicationFactory.cs
- InkSerializer.cs
- TextMetrics.cs
- SourceLineInfo.cs
- ConfigurationSectionGroup.cs
- _ContextAwareResult.cs
- EntityDataSourceContainerNameConverter.cs
- WebControlAdapter.cs
- GridViewRow.cs
- TranslateTransform.cs
- CurrentChangedEventManager.cs
- OdbcStatementHandle.cs
- HebrewNumber.cs
- SessionPageStateSection.cs
- LineServices.cs
- WebConfigurationHostFileChange.cs
- FlowDocumentView.cs
- CheckoutException.cs
- ClientUrlResolverWrapper.cs
- ACE.cs
- ProviderCollection.cs
- WaitForChangedResult.cs
- SmiMetaData.cs
- SimpleHandlerFactory.cs
- HttpMethodConstraint.cs
- KerberosTokenFactoryCredential.cs
- HtmlContainerControl.cs
- GridItem.cs
- SettingsSection.cs
- Variable.cs
- CharacterString.cs
- Deflater.cs
- SpnEndpointIdentity.cs
- CurrentChangedEventManager.cs
- DataBoundControlAdapter.cs
- XmlSchemaExternal.cs
- ListDictionary.cs
- NameSpaceExtractor.cs
- TaiwanLunisolarCalendar.cs
- WmlLabelAdapter.cs
- SchemaCollectionCompiler.cs
- WebServiceErrorEvent.cs
- TreeNodeEventArgs.cs
- JsonCollectionDataContract.cs
- HttpCookieCollection.cs
- GridViewSortEventArgs.cs
- X509CertificateCollection.cs
- ProfileModule.cs
- PointHitTestParameters.cs
- SignatureResourceHelper.cs
- PathFigureCollection.cs
- TextElementCollection.cs
- EventRouteFactory.cs
- SafeTokenHandle.cs
- DiscriminatorMap.cs
- AddressingProperty.cs
- EventTrigger.cs
- BamlRecordWriter.cs
- LinqExpressionNormalizer.cs
- Pen.cs
- PrintPreviewDialog.cs
- SchemaCollectionCompiler.cs
- KerberosRequestorSecurityTokenAuthenticator.cs
- tibetanshape.cs
- XmlChildNodes.cs
- MenuItem.cs
- Int64.cs
- ContentHostHelper.cs
- EmbeddedMailObjectsCollection.cs
- AdRotator.cs
- XsltInput.cs
- TokenBasedSetEnumerator.cs
- PeerNeighborManager.cs
- DetailsViewDesigner.cs
- DNS.cs
- FileChangesMonitor.cs
- COM2ColorConverter.cs
- SmiConnection.cs
- SerializeAbsoluteContext.cs
- EditCommandColumn.cs
- Crc32.cs
- WebGetAttribute.cs
- _HeaderInfo.cs
- DocumentViewerBase.cs
- ButtonFieldBase.cs
- TextWriterEngine.cs
- FixedSOMTableRow.cs
- XmlSchemaAll.cs
- SupportedAddressingMode.cs
- ImpersonateTokenRef.cs
- EntityDataSourceSelectingEventArgs.cs
- GenericTypeParameterBuilder.cs
- SystemIPGlobalProperties.cs
- MailWebEventProvider.cs
- ListBox.cs
- AmbiguousMatchException.cs
- BindingBase.cs