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 / 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
- XsdValidatingReader.cs
- Stopwatch.cs
- WebPartDisplayModeCollection.cs
- EarlyBoundInfo.cs
- CodeIterationStatement.cs
- DataListItem.cs
- LinkArea.cs
- NetworkInformationPermission.cs
- ListControlConvertEventArgs.cs
- HeaderedItemsControl.cs
- DefaultSerializationProviderAttribute.cs
- ImageSourceTypeConverter.cs
- SmiRequestExecutor.cs
- AQNBuilder.cs
- WebPartConnectionsDisconnectVerb.cs
- CharKeyFrameCollection.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- XmlQueryType.cs
- GlobalEventManager.cs
- RefreshInfo.cs
- InstanceCreationEditor.cs
- TypeReference.cs
- TextServicesCompartmentEventSink.cs
- OleCmdHelper.cs
- COM2TypeInfoProcessor.cs
- MessageDecoder.cs
- MediaTimeline.cs
- ScriptingProfileServiceSection.cs
- Label.cs
- AnnotationComponentManager.cs
- SoapCommonClasses.cs
- PermissionSetTriple.cs
- XmlSerializer.cs
- AutoGeneratedFieldProperties.cs
- TextEditorDragDrop.cs
- FullTextState.cs
- TypeDescriptionProviderAttribute.cs
- PriorityBindingExpression.cs
- OledbConnectionStringbuilder.cs
- WindowsScrollBar.cs
- SerializationEventsCache.cs
- SymbolType.cs
- DataServiceClientException.cs
- AutomationProperties.cs
- SelectorItemAutomationPeer.cs
- ContainerSelectorActiveEvent.cs
- EntityContainerAssociationSet.cs
- XPathMessageFilterElementComparer.cs
- XmlSchemaDatatype.cs
- ObservableDictionary.cs
- EntityCommand.cs
- TransportManager.cs
- XmlRawWriterWrapper.cs
- IsolatedStorage.cs
- ColorComboBox.cs
- DbParameterHelper.cs
- ExpanderAutomationPeer.cs
- ResourceReferenceExpression.cs
- BamlBinaryWriter.cs
- ToolStripSplitStackLayout.cs
- BaseCodePageEncoding.cs
- Debugger.cs
- NotConverter.cs
- ICollection.cs
- BaseParagraph.cs
- RadioButton.cs
- EntityDataSourceValidationException.cs
- CqlParserHelpers.cs
- DataTemplateSelector.cs
- DateTimeStorage.cs
- NonBatchDirectoryCompiler.cs
- ToolStripItemTextRenderEventArgs.cs
- WorkflowMarkupElementEventArgs.cs
- EraserBehavior.cs
- RegexCapture.cs
- HandleCollector.cs
- DoubleLinkListEnumerator.cs
- EmbeddedMailObjectsCollection.cs
- EventLogEntry.cs
- DataControlField.cs
- ExpressionVisitorHelpers.cs
- SqlBuilder.cs
- KoreanCalendar.cs
- TrackingServices.cs
- Query.cs
- BitStream.cs
- WindowsSolidBrush.cs
- PackWebRequestFactory.cs
- WorkflowPersistenceContext.cs
- AtomServiceDocumentSerializer.cs
- QueryOptionExpression.cs
- OleDbTransaction.cs
- _NegoStream.cs
- WmpBitmapDecoder.cs
- XmlSchemaSimpleContent.cs
- WebPartConnectVerb.cs
- CharEnumerator.cs
- DesignerVerb.cs
- DoubleCollectionConverter.cs
- Formatter.cs