Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- QilLiteral.cs
- DataPagerFieldCommandEventArgs.cs
- SingleAnimationBase.cs
- Trace.cs
- NetTcpSecurityElement.cs
- XmlElementAttribute.cs
- DataGridTableStyleMappingNameEditor.cs
- Helper.cs
- Rect3DConverter.cs
- DiscardableAttribute.cs
- TextParaClient.cs
- ToolStripScrollButton.cs
- BitmapEffectDrawingContent.cs
- Point3DCollectionConverter.cs
- WhitespaceRuleLookup.cs
- Variable.cs
- DataListItemCollection.cs
- DataServiceQueryException.cs
- QilInvokeEarlyBound.cs
- ListViewInsertedEventArgs.cs
- QEncodedStream.cs
- PartitionedStream.cs
- PrimaryKeyTypeConverter.cs
- WriteableOnDemandStream.cs
- Serializer.cs
- CapabilitiesUse.cs
- XmlSchemaDocumentation.cs
- COM2ColorConverter.cs
- DefaultPropertiesToSend.cs
- SimpleWorkerRequest.cs
- PreservationFileReader.cs
- ViewStateModeByIdAttribute.cs
- CrossAppDomainChannel.cs
- MsmqIntegrationReceiveParameters.cs
- SchemaDeclBase.cs
- XhtmlMobileTextWriter.cs
- BulletedList.cs
- DoubleLinkList.cs
- PeerMessageDispatcher.cs
- StringUtil.cs
- DataServiceQueryOfT.cs
- ControlType.cs
- Pen.cs
- ConfigurationLocationCollection.cs
- PropertyMapper.cs
- StringKeyFrameCollection.cs
- QilIterator.cs
- ProcessHostFactoryHelper.cs
- DataObject.cs
- CqlGenerator.cs
- XPathDocumentNavigator.cs
- CharConverter.cs
- XmlException.cs
- ConnectionStringsExpressionEditor.cs
- SQLByte.cs
- TaiwanLunisolarCalendar.cs
- GridItem.cs
- WSSecurityOneDotZeroReceiveSecurityHeader.cs
- DataSourceSelectArguments.cs
- FormatterServices.cs
- DataGridItemAttachedStorage.cs
- HttpClientChannel.cs
- MLangCodePageEncoding.cs
- DetailsViewModeEventArgs.cs
- AuthorizationSection.cs
- TextEffectResolver.cs
- PropertyGridCommands.cs
- ConstructorNeedsTagAttribute.cs
- ListViewItemSelectionChangedEvent.cs
- XsltCompileContext.cs
- TextComposition.cs
- DbMetaDataCollectionNames.cs
- OleDbErrorCollection.cs
- CacheModeConverter.cs
- SimpleExpression.cs
- UnsafeNativeMethodsPenimc.cs
- WbemException.cs
- RankException.cs
- BamlResourceDeserializer.cs
- TextElementCollectionHelper.cs
- HybridObjectCache.cs
- ComponentChangedEvent.cs
- DataTrigger.cs
- ChannelDispatcherBase.cs
- MimeTypePropertyAttribute.cs
- WebPartTransformerCollection.cs
- TextStore.cs
- PropertyManager.cs
- XmlSchemaSimpleContentExtension.cs
- TextChangedEventArgs.cs
- Compilation.cs
- RequestCache.cs
- ping.cs
- SystemWebExtensionsSectionGroup.cs
- FilterElement.cs
- ResizeGrip.cs
- DiscoveryVersion.cs
- WebServiceTypeData.cs
- ReadWriteObjectLock.cs
- Point4DValueSerializer.cs