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
- TableAdapterManagerNameHandler.cs
- PriorityRange.cs
- SmtpAuthenticationManager.cs
- WindowsComboBox.cs
- DoubleLinkList.cs
- ParallelLoopState.cs
- ContainerVisual.cs
- WindowsFormsHost.cs
- DataBindingList.cs
- ItemMap.cs
- XMLSchema.cs
- UpdateCompiler.cs
- FormViewCommandEventArgs.cs
- GlobalEventManager.cs
- FixUpCollection.cs
- TransformationRules.cs
- LineProperties.cs
- CapacityStreamGeometryContext.cs
- ButtonStandardAdapter.cs
- ColorTypeConverter.cs
- GradientStop.cs
- Authorization.cs
- DescendantOverDescendantQuery.cs
- SecurityElement.cs
- TargetPerspective.cs
- UserControlAutomationPeer.cs
- UInt16Storage.cs
- HyperLinkField.cs
- CodeTypeReference.cs
- MachineKeyConverter.cs
- WindowsListViewItemStartMenu.cs
- HuffModule.cs
- Bezier.cs
- DecoratedNameAttribute.cs
- xdrvalidator.cs
- ContentElementAutomationPeer.cs
- RegistryKey.cs
- NonBatchDirectoryCompiler.cs
- ReflectTypeDescriptionProvider.cs
- SessionParameter.cs
- TemplateComponentConnector.cs
- ListBoxItemWrapperAutomationPeer.cs
- ValidationRuleCollection.cs
- LinkedResource.cs
- IntegerFacetDescriptionElement.cs
- UnsafeNativeMethods.cs
- RichTextBoxConstants.cs
- HttpDictionary.cs
- PropertyGridView.cs
- CompilerParameters.cs
- _UriSyntax.cs
- KeyValueSerializer.cs
- Int64Converter.cs
- HostedElements.cs
- MobileControlsSectionHelper.cs
- EmptyStringExpandableObjectConverter.cs
- DbConnectionPoolGroup.cs
- ProfileModule.cs
- DeviceFilterDictionary.cs
- PerformanceCountersElement.cs
- Model3D.cs
- TextRunTypographyProperties.cs
- BufferModesCollection.cs
- ItemContainerGenerator.cs
- IIS7WorkerRequest.cs
- Inline.cs
- WebPartDisplayModeEventArgs.cs
- DataGridViewCellEventArgs.cs
- DbExpressionRules.cs
- DelegateSerializationHolder.cs
- metrodevice.cs
- PropertyGeneratedEventArgs.cs
- GacUtil.cs
- TaskFileService.cs
- InternalResources.cs
- MessageQueueCriteria.cs
- HelpFileFileNameEditor.cs
- ProfilePropertyMetadata.cs
- GcSettings.cs
- PolyBezierSegment.cs
- OutputScopeManager.cs
- ExceptionUtil.cs
- ITextView.cs
- AdornerDecorator.cs
- ListBoxItemAutomationPeer.cs
- SamlSecurityTokenAuthenticator.cs
- AsyncOperation.cs
- XamlPoint3DCollectionSerializer.cs
- EditorPart.cs
- HandlerFactoryCache.cs
- DecimalMinMaxAggregationOperator.cs
- EffectiveValueEntry.cs
- MultiView.cs
- GridView.cs
- BevelBitmapEffect.cs
- _DomainName.cs
- ContextMarshalException.cs
- DetailsViewDeleteEventArgs.cs
- TextModifierScope.cs
- NavigationCommands.cs