Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- TableLayout.cs
- EndpointAddressMessageFilterTable.cs
- TimeStampChecker.cs
- Misc.cs
- StringUtil.cs
- RelationshipConstraintValidator.cs
- TextEditorThreadLocalStore.cs
- TypeBuilder.cs
- SqlIdentifier.cs
- ClipboardProcessor.cs
- ItemAutomationPeer.cs
- SQLDateTimeStorage.cs
- Model3D.cs
- LocationReferenceValue.cs
- FileSystemInfo.cs
- XmlSchemaGroup.cs
- ObservableDictionary.cs
- FieldNameLookup.cs
- XDRSchema.cs
- LayoutEvent.cs
- CalloutQueueItem.cs
- HttpWebRequestElement.cs
- Activator.cs
- LinkedResource.cs
- DesignerExtenders.cs
- InputReportEventArgs.cs
- EnterpriseServicesHelper.cs
- Int64Converter.cs
- DispatcherHooks.cs
- Command.cs
- Comparer.cs
- ParameterReplacerVisitor.cs
- CompilerParameters.cs
- SHA512Managed.cs
- Code.cs
- IndexedGlyphRun.cs
- CheckBoxBaseAdapter.cs
- SurrogateSelector.cs
- Unit.cs
- NamespaceQuery.cs
- HTMLTextWriter.cs
- PriorityItem.cs
- ValidationRuleCollection.cs
- IssuedTokenParametersElement.cs
- Point3DValueSerializer.cs
- XmlSchemaObject.cs
- NonSerializedAttribute.cs
- PopOutPanel.cs
- EditorPartCollection.cs
- DataControlLinkButton.cs
- EmptyControlCollection.cs
- BasicBrowserDialog.designer.cs
- AggregateNode.cs
- ThreadStartException.cs
- PropertyInformation.cs
- HostedImpersonationContext.cs
- MenuItemStyleCollection.cs
- ConvertEvent.cs
- AdornedElementPlaceholder.cs
- MILUtilities.cs
- ValueType.cs
- RequestCachePolicy.cs
- VirtualizedContainerService.cs
- SelectionItemPattern.cs
- TableLayoutPanelBehavior.cs
- SkewTransform.cs
- WindowHideOrCloseTracker.cs
- Funcletizer.cs
- XmlIncludeAttribute.cs
- CodeVariableDeclarationStatement.cs
- InvalidOperationException.cs
- PropertyGridDesigner.cs
- TextViewDesigner.cs
- HttpCapabilitiesBase.cs
- UrlPath.cs
- InkCanvas.cs
- DecimalConstantAttribute.cs
- ValueTable.cs
- VisualStyleTypesAndProperties.cs
- TextContainerHelper.cs
- ParallelTimeline.cs
- smtpconnection.cs
- followingquery.cs
- ObjectQueryExecutionPlan.cs
- DelayedRegex.cs
- TextStore.cs
- ComponentFactoryHelpers.cs
- DummyDataSource.cs
- SqlCacheDependencyDatabase.cs
- ErrorReporting.cs
- CompilerTypeWithParams.cs
- ExpandCollapseProviderWrapper.cs
- InvalidOperationException.cs
- UserUseLicenseDictionaryLoader.cs
- WinEventHandler.cs
- GlobalizationSection.cs
- TripleDESCryptoServiceProvider.cs
- WindowsGraphicsWrapper.cs
- GlyphManager.cs
- EncryptedKeyIdentifierClause.cs