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
- DispatcherHookEventArgs.cs
- PropertyPushdownHelper.cs
- CustomBindingElementCollection.cs
- InputManager.cs
- SerTrace.cs
- Nodes.cs
- SQLMembershipProvider.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- SerializationBinder.cs
- CodeLabeledStatement.cs
- ScalarType.cs
- CmsInterop.cs
- StartUpEventArgs.cs
- PeoplePickerWrapper.cs
- GenericUriParser.cs
- Drawing.cs
- RecognizerInfo.cs
- CultureData.cs
- EncoderParameters.cs
- TableMethodGenerator.cs
- QilChoice.cs
- Bits.cs
- PageHandlerFactory.cs
- SqlParameterCollection.cs
- CompatibleComparer.cs
- SmtpDigestAuthenticationModule.cs
- XhtmlConformanceSection.cs
- xmlNames.cs
- SafeTokenHandle.cs
- StringWriter.cs
- SqlCaseSimplifier.cs
- ExcCanonicalXml.cs
- GeneralTransform3DTo2DTo3D.cs
- tabpagecollectioneditor.cs
- DependencyObject.cs
- SqlUDTStorage.cs
- MeasurementDCInfo.cs
- PriorityBinding.cs
- PartialCachingControl.cs
- DBConnection.cs
- _IPv4Address.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- formatter.cs
- HtmlValidationSummaryAdapter.cs
- StorageBasedPackageProperties.cs
- GatewayDefinition.cs
- IntSecurity.cs
- EditorZoneDesigner.cs
- TextTreeInsertUndoUnit.cs
- VariantWrapper.cs
- SecurityChannelListener.cs
- Vars.cs
- RegexCharClass.cs
- WindowsClaimSet.cs
- Token.cs
- Connector.xaml.cs
- RuntimeArgumentHandle.cs
- HtmlElement.cs
- SRGSCompiler.cs
- NominalTypeEliminator.cs
- TypeConverterHelper.cs
- QilXmlWriter.cs
- RequestStatusBarUpdateEventArgs.cs
- HelpEvent.cs
- ChannelBinding.cs
- UrlMapping.cs
- Util.cs
- ManualResetEvent.cs
- ImportCatalogPart.cs
- MemberPathMap.cs
- GPPOINTF.cs
- BaseUriWithWildcard.cs
- BooleanAnimationBase.cs
- Pts.cs
- loginstatus.cs
- HMACRIPEMD160.cs
- DataSysAttribute.cs
- SQLInt16.cs
- HMACSHA1.cs
- METAHEADER.cs
- SaveFileDialog.cs
- AssemblyCache.cs
- DBSchemaRow.cs
- IpcChannel.cs
- TextAdaptor.cs
- LicenseException.cs
- WebConfigurationFileMap.cs
- Rect.cs
- ExtensionSimplifierMarkupObject.cs
- VisualStyleTypesAndProperties.cs
- WhereQueryOperator.cs
- RoutedCommand.cs
- AppDomainProtocolHandler.cs
- isolationinterop.cs
- ArgumentNullException.cs
- InputScopeManager.cs
- CursorInteropHelper.cs
- ListViewHitTestInfo.cs
- HtmlInputHidden.cs
- MsmqTransportReceiveParameters.cs