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
- HtmlSelect.cs
- ImpersonationContext.cs
- XappLauncher.cs
- UserInitiatedRoutedEventPermission.cs
- ConfigurationPermission.cs
- OdbcConnectionPoolProviderInfo.cs
- bidPrivateBase.cs
- WpfMemberInvoker.cs
- DateTime.cs
- XmlSchemaGroupRef.cs
- BufferModeSettings.cs
- ListenerSingletonConnectionReader.cs
- QueryCacheManager.cs
- XpsPartBase.cs
- OracleRowUpdatedEventArgs.cs
- PictureBox.cs
- DoubleSumAggregationOperator.cs
- SamlDelegatingWriter.cs
- ValueType.cs
- WindowsGraphics.cs
- MULTI_QI.cs
- DesignColumnCollection.cs
- HttpClientCertificate.cs
- ColumnCollection.cs
- MetadataItemEmitter.cs
- PopupEventArgs.cs
- DocumentPaginator.cs
- AsymmetricSignatureDeformatter.cs
- basenumberconverter.cs
- SByteConverter.cs
- _Events.cs
- IMembershipProvider.cs
- PropertyValueEditor.cs
- ListItemCollection.cs
- XPathDocumentIterator.cs
- Renderer.cs
- GridViewDeleteEventArgs.cs
- XmlSchemaDocumentation.cs
- EntityConnectionStringBuilderItem.cs
- X509Certificate.cs
- ChangeDirector.cs
- LoginUtil.cs
- DataKey.cs
- TextParagraphCache.cs
- OpenFileDialog.cs
- ProxyAttribute.cs
- WebPartTransformerAttribute.cs
- DesignerDataTable.cs
- SQLDateTime.cs
- DrawToolTipEventArgs.cs
- PngBitmapEncoder.cs
- StreamInfo.cs
- oledbmetadatacollectionnames.cs
- BezierSegment.cs
- XmlQuerySequence.cs
- StatusCommandUI.cs
- CellConstantDomain.cs
- Selector.cs
- TransformProviderWrapper.cs
- AtomServiceDocumentSerializer.cs
- LocatorBase.cs
- SqlAliaser.cs
- _DigestClient.cs
- QueryableFilterRepeater.cs
- FormViewDeleteEventArgs.cs
- Operators.cs
- SqlDataSourceFilteringEventArgs.cs
- TableLayoutSettings.cs
- ScriptingRoleServiceSection.cs
- TextBox.cs
- DateBoldEvent.cs
- TimelineGroup.cs
- AccessViolationException.cs
- PropertyNames.cs
- ResXFileRef.cs
- RpcCryptoRequest.cs
- Debug.cs
- WindowsListViewItemStartMenu.cs
- Block.cs
- DbModificationClause.cs
- SamlAuthenticationStatement.cs
- PeerNameResolver.cs
- OperandQuery.cs
- WindowsFormsSynchronizationContext.cs
- LogArchiveSnapshot.cs
- DesignSurfaceEvent.cs
- BooleanAnimationUsingKeyFrames.cs
- EncodingTable.cs
- COM2ExtendedTypeConverter.cs
- DockAndAnchorLayout.cs
- DropDownButton.cs
- UndirectedGraph.cs
- SmiRecordBuffer.cs
- WebHttpBindingElement.cs
- BamlTreeMap.cs
- ExtenderControl.cs
- SupportingTokenAuthenticatorSpecification.cs
- MembershipValidatePasswordEventArgs.cs
- ComponentEditorPage.cs
- _ConnectOverlappedAsyncResult.cs