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
- Span.cs
- UnitySerializationHolder.cs
- COM2FontConverter.cs
- XmlNotation.cs
- ContentHostHelper.cs
- MdImport.cs
- DecoderReplacementFallback.cs
- Line.cs
- WebPartMenuStyle.cs
- RoutedEvent.cs
- Hex.cs
- Frame.cs
- NamespaceMapping.cs
- TraceRecord.cs
- TypeConverters.cs
- SizeKeyFrameCollection.cs
- EventLogStatus.cs
- Label.cs
- RadioButtonFlatAdapter.cs
- BinHexDecoder.cs
- ControlPaint.cs
- SocketElement.cs
- RowSpanVector.cs
- Debug.cs
- Figure.cs
- SafeHandles.cs
- DataGridViewSelectedRowCollection.cs
- WebPartZone.cs
- SpellCheck.cs
- Button.cs
- HMAC.cs
- ImportContext.cs
- ClientCultureInfo.cs
- SelectedGridItemChangedEvent.cs
- CheckBox.cs
- TCPClient.cs
- Tile.cs
- DataColumnPropertyDescriptor.cs
- EnumerableWrapperWeakToStrong.cs
- FolderBrowserDialog.cs
- DbConnectionPoolGroup.cs
- ProfileProvider.cs
- _FixedSizeReader.cs
- SwitchCase.cs
- OracleCommandBuilder.cs
- SingleTagSectionHandler.cs
- CodeTypeReference.cs
- WebMethodAttribute.cs
- ContractMapping.cs
- ThemeableAttribute.cs
- HashMembershipCondition.cs
- NetStream.cs
- SelectedGridItemChangedEvent.cs
- HeaderPanel.cs
- MachineKeyConverter.cs
- AdornerDecorator.cs
- EdmScalarPropertyAttribute.cs
- InterleavedZipPartStream.cs
- RSAPKCS1SignatureFormatter.cs
- DataGridViewColumnStateChangedEventArgs.cs
- Converter.cs
- XmlNode.cs
- SqlDataSourceCommandEventArgs.cs
- OleDbPermission.cs
- OperationAbortedException.cs
- NativeActivity.cs
- WSTrustDec2005.cs
- SimpleHandlerFactory.cs
- ConfigurationManagerHelper.cs
- DateTimeConstantAttribute.cs
- MsmqMessage.cs
- PTManager.cs
- EntitySetDataBindingList.cs
- NameValueConfigurationElement.cs
- MinMaxParagraphWidth.cs
- PinnedBufferMemoryStream.cs
- WebPartActionVerb.cs
- SQLDecimal.cs
- MediaElement.cs
- WithStatement.cs
- ProcessProtocolHandler.cs
- AnnotationComponentChooser.cs
- PreservationFileReader.cs
- SHA256.cs
- XamlReader.cs
- TriggerAction.cs
- SafeCryptContextHandle.cs
- StatusBarPanelClickEvent.cs
- SpotLight.cs
- XmlDataSourceView.cs
- VisualStateGroup.cs
- MailHeaderInfo.cs
- CheckBox.cs
- DataSpaceManager.cs
- COM2Properties.cs
- RowUpdatingEventArgs.cs
- basecomparevalidator.cs
- StorageAssociationSetMapping.cs
- SplineQuaternionKeyFrame.cs
- TriggerBase.cs