Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / System / Windows / Media / Imaging / BitmapMetadataEnumerator.cs / 1 / BitmapMetadataEnumerator.cs
//------------------------------------------------------------------------------
// Microsoft Windows Client Platform
// Copyright (c) Microsoft Corporation, 2005
//
// File: BitmapMetadataEnumerator.cs
//-----------------------------------------------------------------------------
// Allow suppression of certain presharp messages
#pragma warning disable 1634, 1691
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using System.Diagnostics;
using MS.Internal;
using MS.Internal.PresentationCore; // SecurityHelper
using MS.Win32.PresentationCore;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media.Imaging
{
///
/// An enumerator that iterates over the children of a timeline.
///
internal struct BitmapMetadataEnumerator : IEnumerator, IEnumerator
{
#region External interface
#region IEnumerator interface
#region Properties
///
/// Gets the current element in the collection.
///
///
/// The current element in the collection.
///
///
/// Critical - Accesses unmanaged code
/// TreatAsSafe - inputs are verified or safe
///
[SecurityCritical, SecurityTreatAsSafe]
object IEnumerator.Current
{
get
{
return Current;
}
}
#endregion // Properties
#region Methods
///
/// Advances the enumerator to the next element of the collection.
///
///
/// True if the enumerator was successfully advanced to the next element;
/// false if the enumerator has passed the end of the collection.
///
///
/// Critical - Accesses unmanaged code
/// TreatAsSafe - inputs are verified or safe
///
[SecurityCritical, SecurityTreatAsSafe]
public bool MoveNext()
{
if (_fStarted && _current == null)
{
return false;
}
_fStarted = true;
IntPtr ppStr = IntPtr.Zero;
Int32 celtFetched = 0;
try
{
int hr = UnsafeNativeMethods.EnumString.Next(
_enumeratorHandle,
1,
ref ppStr,
ref celtFetched);
if (HRESULT.IsWindowsCodecError(hr))
{
_current = null;
return false;
}
HRESULT.Check(hr);
if (celtFetched == 0)
{
_current = null;
return false;
}
else
{
_current = Marshal.PtrToStringUni(ppStr);
}
}
finally
{
if (ppStr != IntPtr.Zero)
{
Marshal.FreeCoTaskMem(ppStr);
ppStr = IntPtr.Zero;
}
}
return true;
}
///
/// Sets the enumerator to its initial position, which is before the first element
/// in the collection.
///
///
/// Critical - Accesses unmanaged code
/// TreatAsSafe - inputs are verified or safe
///
[SecurityCritical, SecurityTreatAsSafe]
public void Reset()
{
HRESULT.Check(UnsafeNativeMethods.EnumString.Reset(_enumeratorHandle));
_current = null;
_fStarted = false;
}
#endregion // Methods
#endregion // IEnumerator interface
#region Properties
///
/// The current timeline referenced by this enumerator.
///
public String Current
{
get
{
if (_current == null)
{
if (!_fStarted)
{
#pragma warning suppress 56503 // Suppress presharp warning: Follows a pattern similar to Nullable.
throw new InvalidOperationException(SR.Get(SRID.Enumerator_NotStarted));
}
else
{
#pragma warning suppress 56503 // Suppress presharp warning: Follows a pattern similar to Nullable.
throw new InvalidOperationException(SR.Get(SRID.Enumerator_ReachedEnd));
}
}
return _current;
}
}
///
///
///
void IDisposable.Dispose()
{
// Do nothing - Required by the IEnumerable contract.
}
#endregion // Properties
#endregion // External interface
#region Internal implementation
#region Construction
///
/// Creates an enumerator iterates over the children of the specified container.
///
///
/// Handle to a metadata query reader/writer
///
///
/// Critical - Accesses unmanaged code
/// TreatAsSafe - inputs are verified or safe
///
[SecurityCritical, SecurityTreatAsSafe]
internal BitmapMetadataEnumerator(SafeMILHandle metadataHandle)
{
Debug.Assert(metadataHandle != null && !metadataHandle.IsInvalid);
HRESULT.Check(UnsafeNativeMethods.WICMetadataQueryReader.GetEnumerator(
metadataHandle,
out _enumeratorHandle));
_current = null;
_fStarted = false;
}
#endregion // Construction
#region Methods
#endregion // Methods
#region Data
///
/// Critical - pointer to an unmanaged object that methods are called on.
///
[SecurityCritical]
private SafeMILHandle _enumeratorHandle;
private String _current;
private bool _fStarted;
#endregion // Data
#endregion // Internal implementation
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
// Microsoft Windows Client Platform
// Copyright (c) Microsoft Corporation, 2005
//
// File: BitmapMetadataEnumerator.cs
//-----------------------------------------------------------------------------
// Allow suppression of certain presharp messages
#pragma warning disable 1634, 1691
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using System.Diagnostics;
using MS.Internal;
using MS.Internal.PresentationCore; // SecurityHelper
using MS.Win32.PresentationCore;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media.Imaging
{
///
/// An enumerator that iterates over the children of a timeline.
///
internal struct BitmapMetadataEnumerator : IEnumerator, IEnumerator
{
#region External interface
#region IEnumerator interface
#region Properties
///
/// Gets the current element in the collection.
///
///
/// The current element in the collection.
///
///
/// Critical - Accesses unmanaged code
/// TreatAsSafe - inputs are verified or safe
///
[SecurityCritical, SecurityTreatAsSafe]
object IEnumerator.Current
{
get
{
return Current;
}
}
#endregion // Properties
#region Methods
///
/// Advances the enumerator to the next element of the collection.
///
///
/// True if the enumerator was successfully advanced to the next element;
/// false if the enumerator has passed the end of the collection.
///
///
/// Critical - Accesses unmanaged code
/// TreatAsSafe - inputs are verified or safe
///
[SecurityCritical, SecurityTreatAsSafe]
public bool MoveNext()
{
if (_fStarted && _current == null)
{
return false;
}
_fStarted = true;
IntPtr ppStr = IntPtr.Zero;
Int32 celtFetched = 0;
try
{
int hr = UnsafeNativeMethods.EnumString.Next(
_enumeratorHandle,
1,
ref ppStr,
ref celtFetched);
if (HRESULT.IsWindowsCodecError(hr))
{
_current = null;
return false;
}
HRESULT.Check(hr);
if (celtFetched == 0)
{
_current = null;
return false;
}
else
{
_current = Marshal.PtrToStringUni(ppStr);
}
}
finally
{
if (ppStr != IntPtr.Zero)
{
Marshal.FreeCoTaskMem(ppStr);
ppStr = IntPtr.Zero;
}
}
return true;
}
///
/// Sets the enumerator to its initial position, which is before the first element
/// in the collection.
///
///
/// Critical - Accesses unmanaged code
/// TreatAsSafe - inputs are verified or safe
///
[SecurityCritical, SecurityTreatAsSafe]
public void Reset()
{
HRESULT.Check(UnsafeNativeMethods.EnumString.Reset(_enumeratorHandle));
_current = null;
_fStarted = false;
}
#endregion // Methods
#endregion // IEnumerator interface
#region Properties
///
/// The current timeline referenced by this enumerator.
///
public String Current
{
get
{
if (_current == null)
{
if (!_fStarted)
{
#pragma warning suppress 56503 // Suppress presharp warning: Follows a pattern similar to Nullable.
throw new InvalidOperationException(SR.Get(SRID.Enumerator_NotStarted));
}
else
{
#pragma warning suppress 56503 // Suppress presharp warning: Follows a pattern similar to Nullable.
throw new InvalidOperationException(SR.Get(SRID.Enumerator_ReachedEnd));
}
}
return _current;
}
}
///
///
///
void IDisposable.Dispose()
{
// Do nothing - Required by the IEnumerable contract.
}
#endregion // Properties
#endregion // External interface
#region Internal implementation
#region Construction
///
/// Creates an enumerator iterates over the children of the specified container.
///
///
/// Handle to a metadata query reader/writer
///
///
/// Critical - Accesses unmanaged code
/// TreatAsSafe - inputs are verified or safe
///
[SecurityCritical, SecurityTreatAsSafe]
internal BitmapMetadataEnumerator(SafeMILHandle metadataHandle)
{
Debug.Assert(metadataHandle != null && !metadataHandle.IsInvalid);
HRESULT.Check(UnsafeNativeMethods.WICMetadataQueryReader.GetEnumerator(
metadataHandle,
out _enumeratorHandle));
_current = null;
_fStarted = false;
}
#endregion // Construction
#region Methods
#endregion // Methods
#region Data
///
/// Critical - pointer to an unmanaged object that methods are called on.
///
[SecurityCritical]
private SafeMILHandle _enumeratorHandle;
private String _current;
private bool _fStarted;
#endregion // Data
#endregion // Internal implementation
}
}
// 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
- HwndSource.cs
- SettingsSavedEventArgs.cs
- DatagridviewDisplayedBandsData.cs
- ButtonBaseAdapter.cs
- LinqDataSourceValidationException.cs
- DataBindingCollectionEditor.cs
- DbConnectionOptions.cs
- XmlSchemaComplexContentExtension.cs
- ContentIterators.cs
- FormatException.cs
- ProfessionalColorTable.cs
- HttpStreamMessage.cs
- XPathPatternParser.cs
- ProcessHostMapPath.cs
- NumberAction.cs
- ResourceReader.cs
- Msec.cs
- Container.cs
- ConfigXmlElement.cs
- XamlReaderHelper.cs
- GridViewRowCollection.cs
- ReferenceSchema.cs
- ToolStripProgressBar.cs
- ToolStripOverflow.cs
- Size.cs
- Style.cs
- ActivityCodeDomReferenceService.cs
- ComAdminInterfaces.cs
- SqlDataRecord.cs
- ImportContext.cs
- COM2ICategorizePropertiesHandler.cs
- DataKey.cs
- HttpResponse.cs
- NegotiateStream.cs
- SkipStoryboardToFill.cs
- CodeDomDesignerLoader.cs
- SafeNativeMethods.cs
- CachingHintValidation.cs
- ImmutableDispatchRuntime.cs
- PeerNameResolver.cs
- DesignerCategoryAttribute.cs
- XamlPoint3DCollectionSerializer.cs
- ArithmeticException.cs
- InitializerFacet.cs
- AssertUtility.cs
- NegationPusher.cs
- MobileControlPersister.cs
- PropertiesTab.cs
- DocumentsTrace.cs
- Empty.cs
- WindowsListViewGroupHelper.cs
- FunctionDetailsReader.cs
- CodeTypeConstructor.cs
- Codec.cs
- XsdDuration.cs
- HuffmanTree.cs
- MenuItem.cs
- HotSpotCollection.cs
- DataGridViewCellFormattingEventArgs.cs
- EncoderExceptionFallback.cs
- RequestStatusBarUpdateEventArgs.cs
- GeneralTransform2DTo3D.cs
- TransformerTypeCollection.cs
- Vector3DKeyFrameCollection.cs
- FileVersionInfo.cs
- DrawingContext.cs
- Hex.cs
- DependencyPropertyKind.cs
- URLAttribute.cs
- StartUpEventArgs.cs
- ScrollChangedEventArgs.cs
- Pen.cs
- DependencyObject.cs
- FilterElement.cs
- WebReferenceCollection.cs
- SynchronizationContext.cs
- PeerName.cs
- HtmlWindow.cs
- SmiMetaDataProperty.cs
- SelectionRange.cs
- ChangesetResponse.cs
- SqlNamer.cs
- XamlPoint3DCollectionSerializer.cs
- EtwTrackingParticipant.cs
- ImmutableObjectAttribute.cs
- UrlMappingsModule.cs
- TableItemStyle.cs
- PersonalizationProvider.cs
- ListItemCollection.cs
- FileLevelControlBuilderAttribute.cs
- SqlInternalConnectionTds.cs
- SynchronousReceiveBehavior.cs
- SourceLocationProvider.cs
- SapiInterop.cs
- WindowsToolbarItemAsMenuItem.cs
- Package.cs
- XMLSchema.cs
- LicenseManager.cs
- BitFlagsGenerator.cs
- HtmlWindow.cs