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
- SoapAttributeOverrides.cs
- LinqTreeNodeEvaluator.cs
- ToolStripTextBox.cs
- ClipboardData.cs
- FileUpload.cs
- MediaTimeline.cs
- UnsafeNativeMethods.cs
- PingReply.cs
- ControlBuilder.cs
- BitmapCodecInfo.cs
- Setter.cs
- RequestCacheEntry.cs
- X509Certificate2.cs
- SqlFileStream.cs
- Size3DConverter.cs
- LinkArea.cs
- CapacityStreamGeometryContext.cs
- XPathSelfQuery.cs
- SystemIPGlobalProperties.cs
- Effect.cs
- Invariant.cs
- StorageEndPropertyMapping.cs
- DrawingContextWalker.cs
- RedistVersionInfo.cs
- ObjectDataProvider.cs
- CaseInsensitiveHashCodeProvider.cs
- SoapEnumAttribute.cs
- InstanceOwnerQueryResult.cs
- GifBitmapDecoder.cs
- SqlWriter.cs
- MasterPage.cs
- BroadcastEventHelper.cs
- AutomationIdentifier.cs
- RectangleGeometry.cs
- DataFieldCollectionEditor.cs
- TextDecorationUnitValidation.cs
- ConfigurationSchemaErrors.cs
- TextTreeInsertUndoUnit.cs
- HtmlInputHidden.cs
- Base64WriteStateInfo.cs
- ExpandCollapseProviderWrapper.cs
- DataGridViewRowCancelEventArgs.cs
- MenuItemBinding.cs
- ServiceMemoryGates.cs
- SqlNotificationEventArgs.cs
- CombinedTcpChannel.cs
- InputEventArgs.cs
- NumberAction.cs
- Debug.cs
- DecimalAnimation.cs
- Highlights.cs
- XmlIgnoreAttribute.cs
- X509AsymmetricSecurityKey.cs
- XsdBuildProvider.cs
- SoapTransportImporter.cs
- Pool.cs
- PieceDirectory.cs
- DocumentViewerConstants.cs
- UIElementParaClient.cs
- AgileSafeNativeMemoryHandle.cs
- QueryOperationResponseOfT.cs
- Compiler.cs
- DiagnosticsElement.cs
- DeviceSpecificDesigner.cs
- LinqDataSource.cs
- NoneExcludedImageIndexConverter.cs
- WsatTransactionHeader.cs
- AdPostCacheSubstitution.cs
- DataGridViewAdvancedBorderStyle.cs
- FamilyTypefaceCollection.cs
- CodeSubDirectoriesCollection.cs
- SoapTypeAttribute.cs
- ListCommandEventArgs.cs
- DecoderReplacementFallback.cs
- AsyncPostBackTrigger.cs
- TdsParserHelperClasses.cs
- SqlVersion.cs
- ToolStripScrollButton.cs
- TextRangeProviderWrapper.cs
- CopyEncoder.cs
- IdentityReference.cs
- Stack.cs
- WithStatement.cs
- ExportException.cs
- WorkflowInstance.cs
- GifBitmapDecoder.cs
- MTConfigUtil.cs
- XmlSchemaChoice.cs
- ReturnValue.cs
- OverflowException.cs
- StorageSetMapping.cs
- URL.cs
- SerializationSectionGroup.cs
- CFStream.cs
- HostedHttpTransportManager.cs
- XmlCDATASection.cs
- CharEntityEncoderFallback.cs
- SqlBooleanMismatchVisitor.cs
- HwndSourceParameters.cs
- AuthenticationModulesSection.cs