Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- CharKeyFrameCollection.cs
- CodeAttributeArgumentCollection.cs
- FlowPosition.cs
- OneWayChannelFactory.cs
- HtmlButton.cs
- InternalCache.cs
- DataObjectFieldAttribute.cs
- UtilityExtension.cs
- AnimatedTypeHelpers.cs
- WebConfigurationHost.cs
- Trace.cs
- DurationConverter.cs
- FrameAutomationPeer.cs
- InvalidAsynchronousStateException.cs
- TextParaLineResult.cs
- XmlNodeReader.cs
- ProfileModule.cs
- SpeakInfo.cs
- LexicalChunk.cs
- AnnotationResourceCollection.cs
- DocumentViewerConstants.cs
- serverconfig.cs
- TemplateBindingExpressionConverter.cs
- CodeAttributeArgumentCollection.cs
- CaseStatementProjectedSlot.cs
- PropVariant.cs
- UnsafeNativeMethods.cs
- validationstate.cs
- TextDpi.cs
- LocalizableResourceBuilder.cs
- relpropertyhelper.cs
- DataListGeneralPage.cs
- ReferentialConstraintRoleElement.cs
- CodeRemoveEventStatement.cs
- ComboBox.cs
- PropertyChangingEventArgs.cs
- DataGridViewLayoutData.cs
- _BasicClient.cs
- XmlSchemaComplexContentExtension.cs
- Tokenizer.cs
- X509UI.cs
- MbpInfo.cs
- ByteConverter.cs
- SystemColorTracker.cs
- BamlVersionHeader.cs
- EventLogReader.cs
- DbTransaction.cs
- GenericTypeParameterBuilder.cs
- HostedBindingBehavior.cs
- UnionQueryOperator.cs
- ValidationError.cs
- CodeSpit.cs
- StorageEntitySetMapping.cs
- CodeParameterDeclarationExpression.cs
- MessageBox.cs
- LinqDataSourceUpdateEventArgs.cs
- SHA256.cs
- ListBoxItemAutomationPeer.cs
- RuleSettings.cs
- figurelength.cs
- RegexWriter.cs
- EntitySqlQueryState.cs
- Vector.cs
- HandoffBehavior.cs
- FullTextBreakpoint.cs
- HitTestWithPointDrawingContextWalker.cs
- StyleSheet.cs
- KnownTypesProvider.cs
- Composition.cs
- LabelDesigner.cs
- DataBindingHandlerAttribute.cs
- WsrmTraceRecord.cs
- BinaryNode.cs
- documentsequencetextpointer.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- FunctionDescription.cs
- XmlParser.cs
- SchemaElementDecl.cs
- ExpressionReplacer.cs
- FrameworkReadOnlyPropertyMetadata.cs
- _Events.cs
- SecurityContextTokenCache.cs
- ColorDialog.cs
- SqlReorderer.cs
- BamlBinaryReader.cs
- ButtonBaseAdapter.cs
- TransformedBitmap.cs
- TransactionState.cs
- PropertyGrid.cs
- OdbcRowUpdatingEvent.cs
- WindowsEditBox.cs
- ThreadExceptionDialog.cs
- Char.cs
- BadImageFormatException.cs
- ObsoleteAttribute.cs
- MemberAccessException.cs
- TransportConfigurationTypeElementCollection.cs
- StrokeRenderer.cs
- DataColumnMapping.cs
- WebSysDefaultValueAttribute.cs