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
- ServiceMetadataContractBehavior.cs
- MessageBox.cs
- SystemWebSectionGroup.cs
- EventPrivateKey.cs
- CookieHandler.cs
- ButtonColumn.cs
- UriTemplateDispatchFormatter.cs
- ObjectDataSourceSelectingEventArgs.cs
- FixedElement.cs
- Utility.cs
- MinMaxParagraphWidth.cs
- DataServiceHostWrapper.cs
- CharEntityEncoderFallback.cs
- ChildChangedEventArgs.cs
- CapabilitiesUse.cs
- ScriptIgnoreAttribute.cs
- LayoutExceptionEventArgs.cs
- UriTemplateVariableQueryValue.cs
- ColorConverter.cs
- WindowsListViewGroupSubsetLink.cs
- ValidationError.cs
- XamlWriter.cs
- MediaContextNotificationWindow.cs
- EntityDataSourceEntityTypeFilterItem.cs
- OletxTransactionManager.cs
- IntranetCredentialPolicy.cs
- ExecutionEngineException.cs
- DataGridViewRowsRemovedEventArgs.cs
- WebBaseEventKeyComparer.cs
- EntityDataSourceReferenceGroup.cs
- SignatureHelper.cs
- DomainConstraint.cs
- CommonXSendMessage.cs
- PropVariant.cs
- NavigationCommands.cs
- RoleServiceManager.cs
- MimeMapping.cs
- EventSinkHelperWriter.cs
- DynamicActivityTypeDescriptor.cs
- VisualBrush.cs
- InvalidAsynchronousStateException.cs
- MenuItemAutomationPeer.cs
- DataGridViewRowPrePaintEventArgs.cs
- DropDownList.cs
- HeaderPanel.cs
- altserialization.cs
- ToolConsole.cs
- TdsParserHelperClasses.cs
- PropertyEmitterBase.cs
- PeerTransportListenAddressValidator.cs
- ColorConvertedBitmap.cs
- GridView.cs
- ExpressionCopier.cs
- XmlSchema.cs
- userdatakeys.cs
- RightsManagementEncryptedStream.cs
- StructuralCache.cs
- AttachedPropertyMethodSelector.cs
- InvokeWebService.cs
- InternalControlCollection.cs
- StylusPointPropertyInfoDefaults.cs
- WindowsListViewGroupHelper.cs
- WSIdentityFaultException.cs
- SortExpressionBuilder.cs
- Parser.cs
- RealProxy.cs
- XmlDesignerDataSourceView.cs
- SingleConverter.cs
- LocalBuilder.cs
- Oid.cs
- Stylus.cs
- DataGridViewColumnCollection.cs
- ConfigurationManagerInternalFactory.cs
- GenerateTemporaryAssemblyTask.cs
- BitmapCacheBrush.cs
- recordstatescratchpad.cs
- CipherData.cs
- DependencyObjectType.cs
- HorizontalAlignConverter.cs
- DefaultProxySection.cs
- SelectionPattern.cs
- ThreadPool.cs
- PrePostDescendentsWalker.cs
- WaitForChangedResult.cs
- WebControl.cs
- SoapIncludeAttribute.cs
- ArgumentOutOfRangeException.cs
- ItemsPresenter.cs
- ImageListStreamer.cs
- BaseCodeDomTreeGenerator.cs
- ConstNode.cs
- SafeFileMapViewHandle.cs
- CapacityStreamGeometryContext.cs
- FormatException.cs
- DefaultObjectMappingItemCollection.cs
- TextTreeDeleteContentUndoUnit.cs
- TextModifierScope.cs
- _emptywebproxy.cs
- __ComObject.cs
- TypeExtensions.cs