Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OrderedDictionaryStateHelper.cs
- TimersDescriptionAttribute.cs
- DiscoveryServerProtocol.cs
- ScriptingRoleServiceSection.cs
- StructuredTypeInfo.cs
- Header.cs
- GridViewColumnHeaderAutomationPeer.cs
- QueuePathDialog.cs
- __ComObject.cs
- QueryContinueDragEvent.cs
- ColorContext.cs
- RoleServiceManager.cs
- IntegerFacetDescriptionElement.cs
- GraphicsContainer.cs
- XmlLinkedNode.cs
- TypeInitializationException.cs
- ServicesUtilities.cs
- SamlNameIdentifierClaimResource.cs
- CodeMemberEvent.cs
- BindingObserver.cs
- PlanCompiler.cs
- Atom10FormatterFactory.cs
- CodeObject.cs
- SecurityRuntime.cs
- Int32CAMarshaler.cs
- MenuItemBindingCollection.cs
- TextViewSelectionProcessor.cs
- SerializationInfo.cs
- baseaxisquery.cs
- XPathSelfQuery.cs
- FileUtil.cs
- RotationValidation.cs
- TextRangeAdaptor.cs
- HttpHeaderCollection.cs
- PersonalizationStateInfoCollection.cs
- EntityContainerEmitter.cs
- ContextInformation.cs
- LabelEditEvent.cs
- StructuredTypeInfo.cs
- EntityDataSourceValidationException.cs
- RightNameExpirationInfoPair.cs
- Stacktrace.cs
- ValidatingReaderNodeData.cs
- DoubleStorage.cs
- XmlSignificantWhitespace.cs
- ClientConfigurationHost.cs
- IteratorFilter.cs
- DbMetaDataFactory.cs
- DateTimeFormat.cs
- FormsIdentity.cs
- StorageFunctionMapping.cs
- PixelFormat.cs
- ProvidePropertyAttribute.cs
- AssertSection.cs
- QueryOutputWriter.cs
- CodeGeneratorOptions.cs
- SafeLocalAllocation.cs
- HttpListenerException.cs
- BindingBase.cs
- SecurityState.cs
- AsymmetricKeyExchangeFormatter.cs
- XamlPathDataSerializer.cs
- XmlSchemaFacet.cs
- mediaeventargs.cs
- ResXResourceWriter.cs
- OpCellTreeNode.cs
- ModelItemExtensions.cs
- VisualStyleTypesAndProperties.cs
- namescope.cs
- Attributes.cs
- BaseDataList.cs
- XmlExpressionDumper.cs
- FrameworkElementFactory.cs
- LinkClickEvent.cs
- GcSettings.cs
- ConstructorArgumentAttribute.cs
- ArithmeticException.cs
- BindingListCollectionView.cs
- DynamicILGenerator.cs
- TypeLibraryHelper.cs
- ClientCredentials.cs
- IndexedWhereQueryOperator.cs
- BinaryCommonClasses.cs
- GlyphingCache.cs
- XsdCachingReader.cs
- MultipartContentParser.cs
- TextEditor.cs
- DataGridViewRowEventArgs.cs
- _SafeNetHandles.cs
- ListViewItem.cs
- CultureNotFoundException.cs
- DataObjectSettingDataEventArgs.cs
- EntitySet.cs
- PolicyException.cs
- ManualResetEventSlim.cs
- ReceiveSecurityHeaderElementManager.cs
- StaticDataManager.cs
- ButtonFlatAdapter.cs
- ContextBase.cs
- InstancePersistenceCommandException.cs