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
- GenericsInstances.cs
- WindowsFormsDesignerOptionService.cs
- Transform.cs
- VisualTransition.cs
- ApplicationInfo.cs
- BrushConverter.cs
- WebPart.cs
- SslStream.cs
- Hex.cs
- ResumeStoryboard.cs
- TextChange.cs
- DynamicMethod.cs
- LineVisual.cs
- SchemaCollectionCompiler.cs
- KeyEvent.cs
- InheritablePropertyChangeInfo.cs
- SmiMetaData.cs
- DataBoundControlHelper.cs
- _HeaderInfoTable.cs
- DeclaredTypeElement.cs
- JavaScriptSerializer.cs
- DispatcherOperation.cs
- CustomAssemblyResolver.cs
- ProgressBarRenderer.cs
- BrowserCapabilitiesFactory.cs
- AnnotationResourceChangedEventArgs.cs
- MimeTextImporter.cs
- EncryptedReference.cs
- SendKeys.cs
- BridgeDataRecord.cs
- RuntimeVariablesExpression.cs
- TakeQueryOptionExpression.cs
- ExtendedProtectionPolicyElement.cs
- Propagator.ExtentPlaceholderCreator.cs
- DataGridViewImageColumn.cs
- MimeTypeMapper.cs
- TemplateBindingExpressionConverter.cs
- bidPrivateBase.cs
- XmlNodeList.cs
- odbcmetadatacolumnnames.cs
- EndOfStreamException.cs
- DatatypeImplementation.cs
- TemplatePropertyEntry.cs
- HttpCacheVary.cs
- SignerInfo.cs
- TextStore.cs
- ComponentManagerBroker.cs
- FileDataSource.cs
- PointLight.cs
- CommandBindingCollection.cs
- Literal.cs
- TemplateNodeContextMenu.cs
- DesignerAttribute.cs
- ProcessHostServerConfig.cs
- PasswordDeriveBytes.cs
- SiteMapNodeItem.cs
- RadioButton.cs
- EdmItemCollection.OcAssemblyCache.cs
- WindowsToolbar.cs
- DesignColumn.cs
- ParameterCollectionEditorForm.cs
- Light.cs
- ToolStripDropDownMenu.cs
- xmlglyphRunInfo.cs
- Soap12ServerProtocol.cs
- FontDialog.cs
- AssociationEndMember.cs
- WhitespaceRuleReader.cs
- _AutoWebProxyScriptWrapper.cs
- RowToParametersTransformer.cs
- CatalogPartCollection.cs
- BaseTemplateBuildProvider.cs
- ResourceManagerWrapper.cs
- SoapObjectReader.cs
- GuidConverter.cs
- ConfigPathUtility.cs
- XmlAnyAttributeAttribute.cs
- ComplexBindingPropertiesAttribute.cs
- WithStatement.cs
- ImageAutomationPeer.cs
- CompoundFileStorageReference.cs
- SevenBitStream.cs
- StringToken.cs
- Imaging.cs
- SqlAliasesReferenced.cs
- TabletCollection.cs
- StoreAnnotationsMap.cs
- TextTreeInsertElementUndoUnit.cs
- StringFreezingAttribute.cs
- SelectionRange.cs
- RefreshEventArgs.cs
- StaticFileHandler.cs
- Matrix.cs
- MsmqIntegrationChannelFactory.cs
- FileDialogPermission.cs
- ConsoleKeyInfo.cs
- SystemTcpStatistics.cs
- FormsAuthenticationEventArgs.cs
- PartialCachingAttribute.cs
- IRCollection.cs