Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- XMLSyntaxException.cs
- Facet.cs
- XamlReaderHelper.cs
- RegexMatch.cs
- HostExecutionContextManager.cs
- XsdValidatingReader.cs
- Tracking.cs
- SQLSingle.cs
- SqlCacheDependencySection.cs
- Helpers.cs
- NamespaceQuery.cs
- SelectionRange.cs
- SelectorItemAutomationPeer.cs
- MobileControlsSectionHandler.cs
- TemplateAction.cs
- updatecommandorderer.cs
- SspiSecurityTokenParameters.cs
- EndPoint.cs
- DiscoveryMessageProperty.cs
- ObjectDataSourceStatusEventArgs.cs
- SetterBase.cs
- tooltip.cs
- StrokeNodeEnumerator.cs
- SchemaImporterExtensionElementCollection.cs
- VisualBrush.cs
- StringConverter.cs
- CustomAttributeBuilder.cs
- CollectionViewGroup.cs
- TextProperties.cs
- Mutex.cs
- GACMembershipCondition.cs
- SmiConnection.cs
- CurrencyWrapper.cs
- EventProviderWriter.cs
- TextBounds.cs
- PageCopyCount.cs
- RectangleHotSpot.cs
- IndexOutOfRangeException.cs
- MethodBuilder.cs
- Style.cs
- RSAOAEPKeyExchangeDeformatter.cs
- MemberDomainMap.cs
- InteropEnvironment.cs
- Geometry.cs
- MasterPageCodeDomTreeGenerator.cs
- CodeDirectoryCompiler.cs
- TransactionTraceIdentifier.cs
- GregorianCalendarHelper.cs
- ColumnPropertiesGroup.cs
- ButtonFlatAdapter.cs
- ScrollBarRenderer.cs
- ToolStripSystemRenderer.cs
- StructuredTypeEmitter.cs
- XmlSerializerFactory.cs
- TextParagraph.cs
- WebPartVerbCollection.cs
- ClientScriptItemCollection.cs
- Model3DGroup.cs
- DataGridViewCellParsingEventArgs.cs
- CompositeScriptReferenceEventArgs.cs
- TableMethodGenerator.cs
- AppDomainManager.cs
- SoapRpcMethodAttribute.cs
- ReturnEventArgs.cs
- ILGenerator.cs
- EntityDataSourceContextDisposingEventArgs.cs
- PersonalizationStateInfoCollection.cs
- Operand.cs
- XmlHierarchicalEnumerable.cs
- SqlProvider.cs
- ScrollData.cs
- BufferedReadStream.cs
- UriTemplateClientFormatter.cs
- EntityRecordInfo.cs
- CodeSnippetExpression.cs
- ControlBuilderAttribute.cs
- newinstructionaction.cs
- HostUtils.cs
- WCFModelStrings.Designer.cs
- ListViewItemSelectionChangedEvent.cs
- ProtectedConfigurationProviderCollection.cs
- Timer.cs
- ScalarConstant.cs
- UnsafeNativeMethods.cs
- ResourceBinder.cs
- DefaultParameterValueAttribute.cs
- ContractBase.cs
- ColorAnimationUsingKeyFrames.cs
- SqlProcedureAttribute.cs
- ListViewAutomationPeer.cs
- SqlRecordBuffer.cs
- MediaTimeline.cs
- ActivationArguments.cs
- HtmlGenericControl.cs
- FrameworkElement.cs
- TimeSpanSecondsConverter.cs
- RuntimeCompatibilityAttribute.cs
- CollectionView.cs
- BmpBitmapEncoder.cs
- SQLGuidStorage.cs