Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / MS / Internal / Controls / EnumUnknown.cs / 1 / EnumUnknown.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // // // // Description: Helper object implementing IEnumUnknown for enumerating controls // // Source copied from AxContainer.cs // // History // 04/17/05 [....] Created // //----------------------------------------------------------------------------- using System; using System.Collections; using System.Diagnostics; using System.Runtime.InteropServices; using Microsoft.Win32; using System.Security; using MS.Win32; namespace MS.Internal.Controls { #region class EnumUnknown internal class EnumUnknown : UnsafeNativeMethods.IEnumUnknown { private Object[] arr; private int loc; private int size; internal EnumUnknown(Object[] arr) { this.arr = arr; this.loc = 0; this.size = (arr == null) ? 0 : arr.Length; } private EnumUnknown(Object[] arr, int loc) : this(arr) { this.loc = loc; } ////// Critical: Takes arbitrary pointers, writes to memory /// [SecurityCritical] unsafe int UnsafeNativeMethods.IEnumUnknown.Next(int celt, IntPtr rgelt, IntPtr pceltFetched) { if (pceltFetched != IntPtr.Zero) Marshal.WriteInt32(pceltFetched, 0, 0); if (celt < 0) { return NativeMethods.E_INVALIDARG; } int fetched = 0; if (this.loc >= this.size) { fetched = 0; } else { for (; this.loc < this.size && fetched < celt; ++(this.loc)) { if (this.arr[this.loc] != null) { Marshal.WriteIntPtr(rgelt, Marshal.GetIUnknownForObject(this.arr[this.loc])); rgelt = (IntPtr)((long)rgelt + (long)sizeof(IntPtr)); ++fetched; } } } if (pceltFetched != IntPtr.Zero) Marshal.WriteInt32(pceltFetched, 0, fetched); if (fetched != celt) { return (NativeMethods.S_FALSE); } return NativeMethods.S_OK; } int UnsafeNativeMethods.IEnumUnknown.Skip(int celt) { this.loc += celt; if (this.loc >= this.size) { return (NativeMethods.S_FALSE); } return NativeMethods.S_OK; } void UnsafeNativeMethods.IEnumUnknown.Reset() { this.loc = 0; } void UnsafeNativeMethods.IEnumUnknown.Clone(out UnsafeNativeMethods.IEnumUnknown ppenum) { ppenum = new EnumUnknown(this.arr, this.loc); } } #endregion class EnumUnknown } // 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
- WhitespaceReader.cs
- RoutedEvent.cs
- _ConnectionGroup.cs
- IsolatedStorageException.cs
- Int32AnimationUsingKeyFrames.cs
- CodeVariableDeclarationStatement.cs
- GraphicsContainer.cs
- NotifyInputEventArgs.cs
- CustomCategoryAttribute.cs
- COM2ExtendedTypeConverter.cs
- MimeFormatter.cs
- MultiByteCodec.cs
- RuleSettingsCollection.cs
- Clock.cs
- EndpointDiscoveryMetadata11.cs
- AppSettingsExpressionBuilder.cs
- SocketElement.cs
- DataSourceXmlSubItemAttribute.cs
- RelationshipNavigation.cs
- UserNameSecurityTokenProvider.cs
- ListViewGroupConverter.cs
- HttpAsyncResult.cs
- XmlNavigatorFilter.cs
- ExtensibleClassFactory.cs
- SqlRecordBuffer.cs
- TdsParserSafeHandles.cs
- DataGridViewLinkColumn.cs
- DeploymentSectionCache.cs
- TabControlAutomationPeer.cs
- EntityType.cs
- ComponentGlyph.cs
- CheckBoxField.cs
- DockPatternIdentifiers.cs
- Rect3D.cs
- NativeCppClassAttribute.cs
- BroadcastEventHelper.cs
- ByteStream.cs
- SafeNativeMethods.cs
- ServiceChannelFactory.cs
- QilBinary.cs
- nulltextcontainer.cs
- XmlCodeExporter.cs
- XmlSecureResolver.cs
- NativeMethods.cs
- StatusBarDrawItemEvent.cs
- BevelBitmapEffect.cs
- FormViewRow.cs
- Int64Storage.cs
- SafeNativeMethodsMilCoreApi.cs
- _DigestClient.cs
- RowToFieldTransformer.cs
- RootBrowserWindow.cs
- AdornerDecorator.cs
- DoubleUtil.cs
- XmlJsonReader.cs
- RoutedEvent.cs
- DataGrid.cs
- CoordinationService.cs
- BamlRecordReader.cs
- SQLByte.cs
- DynamicRendererThreadManager.cs
- CapabilitiesAssignment.cs
- ActivityCodeGenerator.cs
- UserControlParser.cs
- exports.cs
- DrawListViewSubItemEventArgs.cs
- EarlyBoundInfo.cs
- DrawingImage.cs
- DesignerContextDescriptor.cs
- ToolStripItem.cs
- XmlKeywords.cs
- DiscardableAttribute.cs
- UnhandledExceptionEventArgs.cs
- RegexNode.cs
- ScopelessEnumAttribute.cs
- HideDisabledControlAdapter.cs
- WebPartDisplayModeCancelEventArgs.cs
- RuntimeHandles.cs
- HttpVersion.cs
- SoapSchemaImporter.cs
- _FtpControlStream.cs
- ToolboxCategory.cs
- StringUtil.cs
- ElementNotAvailableException.cs
- ExpressionCopier.cs
- LogSwitch.cs
- MultiDataTrigger.cs
- KeyProperty.cs
- CmsInterop.cs
- TextFormatterImp.cs
- ParameterCollection.cs
- BaseParser.cs
- MatrixAnimationBase.cs
- CheckBoxRenderer.cs
- Enumerable.cs
- AutomationIdentifierGuids.cs
- WebColorConverter.cs
- ColumnHeaderCollectionEditor.cs
- MobileUITypeEditor.cs
- ProgressBar.cs