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
- EntityDataSourceWrapperCollection.cs
- ActivityXRefConverter.cs
- MetaTable.cs
- SmiEventSink_Default.cs
- GeneralTransform2DTo3D.cs
- Stack.cs
- State.cs
- DataGridViewCellPaintingEventArgs.cs
- ConstructorBuilder.cs
- ObjectViewListener.cs
- ViewBox.cs
- RotateTransform.cs
- CustomCredentialPolicy.cs
- MsmqInputMessage.cs
- TypeElementCollection.cs
- _AutoWebProxyScriptWrapper.cs
- WindowsListViewItemStartMenu.cs
- FormViewDeleteEventArgs.cs
- TableRowCollection.cs
- PeerUnsafeNativeCryptMethods.cs
- DynamicRendererThreadManager.cs
- WindowsListViewGroupHelper.cs
- WpfWebRequestHelper.cs
- MailSettingsSection.cs
- Attachment.cs
- GridSplitterAutomationPeer.cs
- SqlCaseSimplifier.cs
- EntityTemplateFactory.cs
- PropertyPathConverter.cs
- QueryContinueDragEvent.cs
- PriorityBindingExpression.cs
- ToolBarButton.cs
- DeferredSelectedIndexReference.cs
- WebServiceFaultDesigner.cs
- _ConnectStream.cs
- SmtpNegotiateAuthenticationModule.cs
- ButtonAutomationPeer.cs
- complextypematerializer.cs
- XmlText.cs
- HierarchicalDataSourceConverter.cs
- LogLogRecordHeader.cs
- TableProviderWrapper.cs
- TextPointerBase.cs
- xml.cs
- DefaultBinder.cs
- _DigestClient.cs
- SymLanguageVendor.cs
- SignatureConfirmations.cs
- TextTreeNode.cs
- DispatcherHookEventArgs.cs
- EntityDataSourceValidationException.cs
- SqlUtil.cs
- Calendar.cs
- ListenerConnectionModeReader.cs
- PropertyDescriptor.cs
- ButtonBaseDesigner.cs
- Number.cs
- WindowsSspiNegotiation.cs
- HtmlTable.cs
- ImportContext.cs
- ImportCatalogPart.cs
- MediaPlayerState.cs
- ToolboxItemWrapper.cs
- RoleManagerModule.cs
- AuthenticationModuleElement.cs
- UnmanagedMarshal.cs
- MultitargetUtil.cs
- XmlNodeReader.cs
- XomlCompilerHelpers.cs
- CookieParameter.cs
- SystemIPGlobalProperties.cs
- DataRelation.cs
- FrugalMap.cs
- XPathNodePointer.cs
- MdiWindowListStrip.cs
- Block.cs
- TrustExchangeException.cs
- sqlser.cs
- Compiler.cs
- SqlPersonalizationProvider.cs
- RichTextBoxConstants.cs
- InkCanvas.cs
- ApplicationDirectoryMembershipCondition.cs
- PropertyPathWorker.cs
- TargetConverter.cs
- smtpconnection.cs
- DataServiceEntityAttribute.cs
- Wizard.cs
- HttpWebResponse.cs
- StatusBarItemAutomationPeer.cs
- CqlWriter.cs
- SqlLiftIndependentRowExpressions.cs
- SqlResolver.cs
- EntityKeyElement.cs
- EmissiveMaterial.cs
- XmlSchemaSequence.cs
- CodeSnippetCompileUnit.cs
- PropertyMetadata.cs
- LinkAreaEditor.cs
- DeclarativeCatalogPart.cs