Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / Imaging / UnknownBitmapDecoder.cs / 1305600 / 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 /// ////// Critical: Uses a SafeFileHandle, which is a SecurityCritical type (in v4). /// Calls SecurityCritical base class constructor. /// [SecurityCritical] 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 /// ////// Critical: Uses a SafeFileHandle, which is a SecurityCritical type (in v4). /// Calls SecurityCritical base class constructor. /// [SecurityCritical] 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
- PrintPageEvent.cs
- ComplexLine.cs
- SafeBuffer.cs
- ToolboxItemAttribute.cs
- SpellCheck.cs
- HttpClientChannel.cs
- DetailsViewDeletedEventArgs.cs
- QueryOperationResponseOfT.cs
- XmlAttributeOverrides.cs
- EndOfStreamException.cs
- SafeLocalMemHandle.cs
- ServiceDescriptionReflector.cs
- Monitor.cs
- ElementProxy.cs
- CacheAxisQuery.cs
- Missing.cs
- PasswordTextNavigator.cs
- MachineKeyConverter.cs
- TextPointer.cs
- WorkerRequest.cs
- RectangleF.cs
- Substitution.cs
- GridViewUpdatedEventArgs.cs
- ResolvedKeyFrameEntry.cs
- DataGridViewRowCollection.cs
- ContentElement.cs
- Helpers.cs
- SessionStateModule.cs
- DataGridTextBoxColumn.cs
- ObjectQuery.cs
- unitconverter.cs
- DynamicArgumentDesigner.xaml.cs
- AlgoModule.cs
- X509IssuerSerialKeyIdentifierClause.cs
- ObjectDataSourceSelectingEventArgs.cs
- EdmEntityTypeAttribute.cs
- SimplePropertyEntry.cs
- DateTimeHelper.cs
- ArrayHelper.cs
- SeekableReadStream.cs
- LoginUtil.cs
- CharacterMetricsDictionary.cs
- PerspectiveCamera.cs
- Property.cs
- DispatcherEventArgs.cs
- ApplicationGesture.cs
- Polygon.cs
- ToolStripManager.cs
- UseAttributeSetsAction.cs
- XmlLoader.cs
- WriteableOnDemandPackagePart.cs
- RequestResizeEvent.cs
- LineVisual.cs
- PlainXmlSerializer.cs
- FixedBufferAttribute.cs
- unsafenativemethodstextservices.cs
- AdornerLayer.cs
- FormView.cs
- CustomAttributeSerializer.cs
- CodePageUtils.cs
- ClientSideProviderDescription.cs
- UserPreferenceChangingEventArgs.cs
- SchemaCollectionPreprocessor.cs
- SHA256Managed.cs
- DefaultMergeHelper.cs
- XmlSchemaObjectTable.cs
- TypedElement.cs
- ThreadSafeMessageFilterTable.cs
- StylusButton.cs
- XmlNotation.cs
- GroupQuery.cs
- DataContractJsonSerializerOperationBehavior.cs
- XmlDocumentType.cs
- DataSourceControl.cs
- TrackingWorkflowEventArgs.cs
- Compress.cs
- WmpBitmapDecoder.cs
- StateItem.cs
- NativeMethods.cs
- FormViewUpdateEventArgs.cs
- XsdCachingReader.cs
- ProgressBarAutomationPeer.cs
- CustomAttribute.cs
- CommandLibraryHelper.cs
- VisualStateGroup.cs
- DataGridViewTopLeftHeaderCell.cs
- Grid.cs
- DataBoundLiteralControl.cs
- QilVisitor.cs
- TraceContextEventArgs.cs
- OracleCommandSet.cs
- PersonalizationState.cs
- DataGridViewImageCell.cs
- RoutedUICommand.cs
- URIFormatException.cs
- HostExecutionContextManager.cs
- SystemColors.cs
- TableDetailsCollection.cs
- SerialPort.cs
- HttpContext.cs