Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / Imaging / UnknownBitmapDecoder.cs / 1305600 / 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 /// ////// Critical: Uses a SafeFileHandle, which is a SecurityCritical type (in v4). /// Calls SecurityCritical base class constructor. /// [SecurityCritical] 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
- TCEAdapterGenerator.cs
- ComponentCollection.cs
- ListViewGroup.cs
- Page.cs
- ResXFileRef.cs
- ModelUtilities.cs
- FieldDescriptor.cs
- ReachUIElementCollectionSerializerAsync.cs
- XmlSchemaAnyAttribute.cs
- versioninfo.cs
- ConfigXmlWhitespace.cs
- ControlCachePolicy.cs
- OdbcConnectionStringbuilder.cs
- DataGridViewTopRowAccessibleObject.cs
- ExpressionPrefixAttribute.cs
- QueryCacheKey.cs
- MailAddressCollection.cs
- HttpNamespaceReservationInstallComponent.cs
- Util.cs
- FontDialog.cs
- Token.cs
- Sentence.cs
- invalidudtexception.cs
- TextSelection.cs
- AssemblyName.cs
- ButtonBaseAdapter.cs
- XmlSchemaExporter.cs
- DataGridCommandEventArgs.cs
- DetailsViewDeleteEventArgs.cs
- TaskbarItemInfo.cs
- TypeExtensionConverter.cs
- ScrollViewerAutomationPeer.cs
- HttpModuleActionCollection.cs
- dataobject.cs
- HostingEnvironmentSection.cs
- ProfileSettingsCollection.cs
- BrowserDefinitionCollection.cs
- AttachedAnnotationChangedEventArgs.cs
- Composition.cs
- EditingMode.cs
- SrgsToken.cs
- Geometry3D.cs
- ContextConfiguration.cs
- Icon.cs
- WebPartConnectionsCancelEventArgs.cs
- EntityProviderFactory.cs
- WebServiceResponseDesigner.cs
- WindowsTreeView.cs
- GeneratedContractType.cs
- ClrPerspective.cs
- ServiceOperation.cs
- GeneralTransform.cs
- WindowsStartMenu.cs
- ClassImporter.cs
- SecurityManager.cs
- KoreanCalendar.cs
- Context.cs
- FileReservationCollection.cs
- CustomGrammar.cs
- SpecularMaterial.cs
- PropertyInfoSet.cs
- SqlFormatter.cs
- UnknownBitmapDecoder.cs
- TTSEngineProxy.cs
- HttpDictionary.cs
- OleDbParameter.cs
- CardSpacePolicyElement.cs
- TransformPattern.cs
- CodeAttachEventStatement.cs
- SQLRoleProvider.cs
- HtmlTableCell.cs
- ButtonFlatAdapter.cs
- RelatedCurrencyManager.cs
- DesignerAutoFormat.cs
- XD.cs
- File.cs
- DataObjectAttribute.cs
- XPathNodeHelper.cs
- BamlRecordWriter.cs
- MethodImplAttribute.cs
- TraceFilter.cs
- WpfWebRequestHelper.cs
- PropVariant.cs
- PipelineModuleStepContainer.cs
- ReferentialConstraint.cs
- UnaryExpression.cs
- BooleanFunctions.cs
- SerialReceived.cs
- OdbcStatementHandle.cs
- CodeTypeParameter.cs
- MappingModelBuildProvider.cs
- cookiecontainer.cs
- TraceHandler.cs
- ComEventsMethod.cs
- HttpResponseWrapper.cs
- BrowserDefinition.cs
- DeploymentSectionCache.cs
- SerializationEventsCache.cs
- ConnectionStringsSection.cs
- ExpressionsCollectionEditor.cs