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
- EventWaitHandle.cs
- HtmlEncodedRawTextWriter.cs
- ObjectHandle.cs
- WindowsAuthenticationEventArgs.cs
- TextFormatter.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- DataObjectCopyingEventArgs.cs
- RequestCacheValidator.cs
- GridViewDeleteEventArgs.cs
- Variant.cs
- PipeStream.cs
- ObjectNotFoundException.cs
- MediaElementAutomationPeer.cs
- DynamicILGenerator.cs
- assemblycache.cs
- Vector3DConverter.cs
- AuthorizationRule.cs
- InfiniteIntConverter.cs
- BitmapFrame.cs
- DynamicPropertyHolder.cs
- PolicyUnit.cs
- XPathNodeInfoAtom.cs
- ContainerVisual.cs
- DiscoveryDocumentSearchPattern.cs
- ScrollPattern.cs
- NamespaceCollection.cs
- HttpCacheParams.cs
- PnrpPeerResolverElement.cs
- MeasureData.cs
- DataServiceQuery.cs
- BuildResult.cs
- ConfigurationErrorsException.cs
- X509Extension.cs
- PageSettings.cs
- MatrixUtil.cs
- CodeGroup.cs
- XmlComplianceUtil.cs
- FlatButtonAppearance.cs
- TCPListener.cs
- SizeAnimationBase.cs
- AssertFilter.cs
- SingleAnimationBase.cs
- TableItemPattern.cs
- ProfileInfo.cs
- ProxyFragment.cs
- StrongNameHelpers.cs
- WebRequest.cs
- DataGridTablesFactory.cs
- DSASignatureDeformatter.cs
- ForEachDesigner.xaml.cs
- NestPullup.cs
- ThreadPool.cs
- SqlClientFactory.cs
- SqlDependencyUtils.cs
- InvokePatternIdentifiers.cs
- ClientCultureInfo.cs
- EncryptedXml.cs
- OdbcConnectionPoolProviderInfo.cs
- HttpProfileGroupBase.cs
- ViewUtilities.cs
- OrderedDictionary.cs
- DataSourceControl.cs
- DataGridViewLinkColumn.cs
- ProcessHostFactoryHelper.cs
- CatalogZone.cs
- Point3DCollection.cs
- PathParser.cs
- AnnotationResourceCollection.cs
- FlowDocumentView.cs
- DataGridColumnHeadersPresenter.cs
- MatrixConverter.cs
- WebPartMenuStyle.cs
- SystemMulticastIPAddressInformation.cs
- ByteFacetDescriptionElement.cs
- Control.cs
- LayoutTableCell.cs
- XDRSchema.cs
- Transactions.cs
- EditorPartChrome.cs
- SamlAuthorizationDecisionStatement.cs
- Membership.cs
- TextElementEnumerator.cs
- XhtmlTextWriter.cs
- SoapEnumAttribute.cs
- Comparer.cs
- PersonalizationState.cs
- CompressionTracing.cs
- GeneralTransform3DTo2DTo3D.cs
- ServiceChannelFactory.cs
- ApplicationInfo.cs
- PropertyValueUIItem.cs
- BoundField.cs
- BlurEffect.cs
- AdRotator.cs
- WindowsSlider.cs
- __TransparentProxy.cs
- ITextView.cs
- RegisteredDisposeScript.cs
- TitleStyle.cs
- Predicate.cs