Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- OleDbRowUpdatingEvent.cs
- DynamicRouteExpression.cs
- WebPartEditorOkVerb.cs
- ControlCachePolicy.cs
- GridViewColumnHeader.cs
- odbcmetadatacollectionnames.cs
- NonSerializedAttribute.cs
- UnsafeMethods.cs
- GC.cs
- EntityDataSourceUtil.cs
- CreatingCookieEventArgs.cs
- WorkflowViewStateService.cs
- TimeSpanConverter.cs
- WriteableBitmap.cs
- TemplateParser.cs
- MachineKeyConverter.cs
- Int32Collection.cs
- EnumConverter.cs
- ResourceContainer.cs
- MatrixConverter.cs
- WebBrowsableAttribute.cs
- GlyphShapingProperties.cs
- TokenizerHelper.cs
- ColumnMapProcessor.cs
- ReadOnlyAttribute.cs
- CurrencyWrapper.cs
- PointConverter.cs
- Cursor.cs
- QilVisitor.cs
- ThumbAutomationPeer.cs
- ExpressionBuilder.cs
- SmtpTransport.cs
- PasswordRecoveryDesigner.cs
- CompressEmulationStream.cs
- Automation.cs
- TabletDeviceInfo.cs
- XmlKeywords.cs
- DBSqlParserTableCollection.cs
- XmlDeclaration.cs
- ObfuscateAssemblyAttribute.cs
- DbConnectionPool.cs
- RelationshipConverter.cs
- SqlVisitor.cs
- IndividualDeviceConfig.cs
- FileUpload.cs
- GeneratedCodeAttribute.cs
- XmlSchemaExporter.cs
- HelpExampleGenerator.cs
- ToolStripSplitStackLayout.cs
- XmlSchemas.cs
- TextTreeRootTextBlock.cs
- OdbcConnectionFactory.cs
- DrawingAttributesDefaultValueFactory.cs
- CompilationUtil.cs
- GlobalizationSection.cs
- AppDomainManager.cs
- ZeroOpNode.cs
- FileVersionInfo.cs
- DeploymentExceptionMapper.cs
- AddingNewEventArgs.cs
- XXXInfos.cs
- PanelStyle.cs
- DayRenderEvent.cs
- SkewTransform.cs
- TemplateComponentConnector.cs
- _PooledStream.cs
- CodeMemberProperty.cs
- EdmMember.cs
- WpfWebRequestHelper.cs
- TreeViewHitTestInfo.cs
- EmptyWithCancelationCheckWorkItem.cs
- PackageProperties.cs
- ConversionContext.cs
- TextRangeEditTables.cs
- BaseInfoTable.cs
- BasePattern.cs
- _IPv6Address.cs
- ConstraintCollection.cs
- TrackBar.cs
- DigestTraceRecordHelper.cs
- AutoGeneratedField.cs
- TagMapInfo.cs
- LocalizableAttribute.cs
- CompositeKey.cs
- AlternateView.cs
- XmlNavigatorFilter.cs
- WmlImageAdapter.cs
- Effect.cs
- ConfigXmlElement.cs
- SynchronizationLockException.cs
- TimerElapsedEvenArgs.cs
- RequestCachePolicyConverter.cs
- DataGridViewRowEventArgs.cs
- InvalidOleVariantTypeException.cs
- WindowPattern.cs
- XmlSchemaValidationException.cs
- Timer.cs
- GridViewDeleteEventArgs.cs
- StorageEntitySetMapping.cs
- PointLightBase.cs