Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / Imaging / BitmapMetadataEnumerator.cs / 1305600 / 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 /// object IEnumerator.Current { [SecurityCritical, SecurityTreatAsSafe] 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 /// object IEnumerator.Current { [SecurityCritical, SecurityTreatAsSafe] 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
- TabControlAutomationPeer.cs
- Msmq4SubqueuePoisonHandler.cs
- ControlBuilder.cs
- WindowsStartMenu.cs
- dsa.cs
- SafeUserTokenHandle.cs
- TrustManagerPromptUI.cs
- TdsParserStateObject.cs
- Certificate.cs
- IsolatedStorageFileStream.cs
- RegexRunner.cs
- TypePropertyEditor.cs
- AmbientLight.cs
- KeyTimeConverter.cs
- DataBindingList.cs
- Menu.cs
- LoginUtil.cs
- ViewBox.cs
- SmtpDigestAuthenticationModule.cs
- PrimitiveXmlSerializers.cs
- RevocationPoint.cs
- BlobPersonalizationState.cs
- EntityDataSourceDesignerHelper.cs
- LightweightEntityWrapper.cs
- XmlSerializableWriter.cs
- XamlRtfConverter.cs
- FigureParagraph.cs
- FrameworkContentElement.cs
- SQLMoneyStorage.cs
- ObjectParameterCollection.cs
- TextSchema.cs
- TypeSystemProvider.cs
- ScriptMethodAttribute.cs
- CompletionBookmark.cs
- UserControlCodeDomTreeGenerator.cs
- LinearGradientBrush.cs
- RoleGroup.cs
- EffectiveValueEntry.cs
- UserControl.cs
- TemplateBaseAction.cs
- VideoDrawing.cs
- X509ChainElement.cs
- ConstraintConverter.cs
- ControlAdapter.cs
- Utils.cs
- ButtonDesigner.cs
- SqlHelper.cs
- ShortcutKeysEditor.cs
- SponsorHelper.cs
- BitmapDecoder.cs
- PathFigureCollectionConverter.cs
- TriState.cs
- LinkedResource.cs
- Vector3dCollection.cs
- FontStretch.cs
- XmlMembersMapping.cs
- NotifyIcon.cs
- IEnumerable.cs
- MenuItemStyleCollectionEditor.cs
- XDRSchema.cs
- EncoderFallback.cs
- SynchronizedDispatch.cs
- RIPEMD160.cs
- MsmqHostedTransportConfiguration.cs
- XmlSchemaAttributeGroup.cs
- ListViewUpdateEventArgs.cs
- XmlnsPrefixAttribute.cs
- DataRecordInfo.cs
- SatelliteContractVersionAttribute.cs
- Group.cs
- MasterPageCodeDomTreeGenerator.cs
- UInt64.cs
- FlagsAttribute.cs
- DetailsViewDeletedEventArgs.cs
- StrongNameMembershipCondition.cs
- TraceProvider.cs
- DependencyPropertyValueSerializer.cs
- DispatcherTimer.cs
- InputReportEventArgs.cs
- Set.cs
- HWStack.cs
- SystemParameters.cs
- SinglePageViewer.cs
- BitmapCodecInfoInternal.cs
- FontDriver.cs
- MouseWheelEventArgs.cs
- TemplateApplicationHelper.cs
- templategroup.cs
- SystemParameters.cs
- SharedMemory.cs
- ShaderEffect.cs
- SafeWaitHandle.cs
- UniqueEventHelper.cs
- PagesChangedEventArgs.cs
- CompModSwitches.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- FormattedTextSymbols.cs
- FontFamily.cs
- TextPointer.cs
- SHA256.cs