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 / Imaging / UnknownBitmapDecoder.cs / 1 / UnknownBitmapDecoder.cs
//------------------------------------------------------------------------------ // Microsoft Avalon // Copyright (c) Microsoft Corporation, All Rights Reserved // // File: UnknownBitmapDecoder.cs // //----------------------------------------------------------------------------- using System; using System.IO; using System.Collections; using System.Security; using System.Security.Permissions; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Reflection; using Microsoft.Win32.SafeHandles; using MS.Internal; using System.Diagnostics; using System.Windows.Media; using System.Globalization; using System.Runtime.InteropServices; namespace System.Windows.Media.Imaging { #region UnknownBitmapDecoder ////// The built-in Microsoft Unknown (Bitmap) Decoder. /// internal sealed class UnknownBitmapDecoder : BitmapDecoder { ////// This class is to allow us to call CoInitialize when the UnknownBitmapDecoder /// is created, so that the unmanaged dll does not get unload until we are. /// private class CoInitSafeHandle : SafeMILHandle { ////// Critical - accesses critical code. /// TreatAsSafe - No inputs, does not touch any critical data with external input. /// [SecurityCritical, SecurityTreatAsSafe] public CoInitSafeHandle() { MS.Win32.PresentationCore.UnsafeNativeMethods.WICCodec.CoInitialize(IntPtr.Zero); } ////// Critical - accesses critical code. /// TreatAsSafe - No inputs, does not touch any critical data with external input. /// [SecurityCritical, SecurityTreatAsSafe] protected override bool ReleaseHandle() { MS.Win32.PresentationCore.UnsafeNativeMethods.WICCodec.CoUninitialize(); return true; } } ////// Don't allow construction of a decoder with no params /// private UnknownBitmapDecoder() { } ////// Internal Constructor /// internal UnknownBitmapDecoder( SafeMILHandle decoderHandle, BitmapDecoder decoder, Uri baseUri, Uri uri, Stream stream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, bool insertInDecoderCache, bool originalWritable, Stream uriStream, UnmanagedMemoryStream unmanagedMemoryStream, SafeFileHandle safeFilehandle ) : base(decoderHandle, decoder, baseUri, uri, stream, createOptions, cacheOption, insertInDecoderCache, originalWritable, uriStream, unmanagedMemoryStream, safeFilehandle) { } #region Internal Abstract /// Need to implement this to derive from the "sealed" object internal override void SealObject() { throw new NotImplementedException(); } #endregion ////// Store a safe handle to take care of calling CoInitialize /// and CoUninitialize for us when the object is created/disposed. /// private CoInitSafeHandle _safeHandle = new CoInitSafeHandle(); } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ // Microsoft Avalon // Copyright (c) Microsoft Corporation, All Rights Reserved // // File: UnknownBitmapDecoder.cs // //----------------------------------------------------------------------------- using System; using System.IO; using System.Collections; using System.Security; using System.Security.Permissions; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Reflection; using Microsoft.Win32.SafeHandles; using MS.Internal; using System.Diagnostics; using System.Windows.Media; using System.Globalization; using System.Runtime.InteropServices; namespace System.Windows.Media.Imaging { #region UnknownBitmapDecoder ////// The built-in Microsoft Unknown (Bitmap) Decoder. /// internal sealed class UnknownBitmapDecoder : BitmapDecoder { ////// This class is to allow us to call CoInitialize when the UnknownBitmapDecoder /// is created, so that the unmanaged dll does not get unload until we are. /// private class CoInitSafeHandle : SafeMILHandle { ////// Critical - accesses critical code. /// TreatAsSafe - No inputs, does not touch any critical data with external input. /// [SecurityCritical, SecurityTreatAsSafe] public CoInitSafeHandle() { MS.Win32.PresentationCore.UnsafeNativeMethods.WICCodec.CoInitialize(IntPtr.Zero); } ////// Critical - accesses critical code. /// TreatAsSafe - No inputs, does not touch any critical data with external input. /// [SecurityCritical, SecurityTreatAsSafe] protected override bool ReleaseHandle() { MS.Win32.PresentationCore.UnsafeNativeMethods.WICCodec.CoUninitialize(); return true; } } ////// Don't allow construction of a decoder with no params /// private UnknownBitmapDecoder() { } ////// Internal Constructor /// internal UnknownBitmapDecoder( SafeMILHandle decoderHandle, BitmapDecoder decoder, Uri baseUri, Uri uri, Stream stream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, bool insertInDecoderCache, bool originalWritable, Stream uriStream, UnmanagedMemoryStream unmanagedMemoryStream, SafeFileHandle safeFilehandle ) : base(decoderHandle, decoder, baseUri, uri, stream, createOptions, cacheOption, insertInDecoderCache, originalWritable, uriStream, unmanagedMemoryStream, safeFilehandle) { } #region Internal Abstract /// Need to implement this to derive from the "sealed" object internal override void SealObject() { throw new NotImplementedException(); } #endregion ////// Store a safe handle to take care of calling CoInitialize /// and CoUninitialize for us when the object is created/disposed. /// private CoInitSafeHandle _safeHandle = new CoInitSafeHandle(); } #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
- EndOfStreamException.cs
- OperationContractAttribute.cs
- UntrustedRecipientException.cs
- StateItem.cs
- FixedPageProcessor.cs
- WindowsListViewScroll.cs
- BindingManagerDataErrorEventArgs.cs
- StylusEventArgs.cs
- DetailsViewPageEventArgs.cs
- WindowsIdentity.cs
- SmtpClient.cs
- EntityDataSourceSelectingEventArgs.cs
- WebPartZoneBase.cs
- SchemaMapping.cs
- OdbcReferenceCollection.cs
- InputManager.cs
- nulltextcontainer.cs
- Substitution.cs
- RepeaterItemEventArgs.cs
- XamlReader.cs
- CollectionConverter.cs
- ProvideValueServiceProvider.cs
- CodeIterationStatement.cs
- SmiContext.cs
- InternalResources.cs
- MaskInputRejectedEventArgs.cs
- GeometryModel3D.cs
- CapabilitiesRule.cs
- XmlSchemaObject.cs
- TextTrailingCharacterEllipsis.cs
- StylusButtonEventArgs.cs
- RichTextBox.cs
- EventsTab.cs
- InternalCache.cs
- ControlDesigner.cs
- DataGridTextBoxColumn.cs
- EntityException.cs
- SystemWebExtensionsSectionGroup.cs
- SafeNativeMethods.cs
- XamlPoint3DCollectionSerializer.cs
- PointAnimationUsingKeyFrames.cs
- RuntimeConfig.cs
- NetworkStream.cs
- TraceHelpers.cs
- objectresult_tresulttype.cs
- MenuItemCollection.cs
- XmlDeclaration.cs
- ExtentCqlBlock.cs
- IProducerConsumerCollection.cs
- WebPartManagerInternals.cs
- EntityProxyFactory.cs
- FieldMetadata.cs
- SkipQueryOptionExpression.cs
- ToolStripRenderEventArgs.cs
- SerTrace.cs
- TextTreeFixupNode.cs
- UnaryExpression.cs
- DocobjHost.cs
- MessageLogTraceRecord.cs
- SpecularMaterial.cs
- X509RecipientCertificateServiceElement.cs
- OpenTypeMethods.cs
- WorkflowItemPresenter.cs
- MetadataArtifactLoaderCompositeFile.cs
- PageHandlerFactory.cs
- BufferedWebEventProvider.cs
- XmlValueConverter.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- QueryCursorEventArgs.cs
- TitleStyle.cs
- ReversePositionQuery.cs
- ServiceModelInstallComponent.cs
- ClientUrlResolverWrapper.cs
- KeyValueConfigurationElement.cs
- Activity.cs
- WmlListAdapter.cs
- Quaternion.cs
- TablePatternIdentifiers.cs
- PreviewPrintController.cs
- LabelEditEvent.cs
- MailDefinition.cs
- DrawingContextWalker.cs
- ModelFunctionTypeElement.cs
- AndCondition.cs
- Sorting.cs
- TextDecoration.cs
- FactoryGenerator.cs
- SpeakProgressEventArgs.cs
- StylusButtonCollection.cs
- HeaderLabel.cs
- DeflateStream.cs
- StrokeNodeData.cs
- StaticResourceExtension.cs
- Activity.cs
- RotateTransform.cs
- SessionEndingEventArgs.cs
- BypassElementCollection.cs
- TypeHelper.cs
- EncodingNLS.cs
- ZipIOCentralDirectoryDigitalSignature.cs