Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / infocard / Client / System / IdentityModel / Selectors / PolicyChain.cs / 1305376 / PolicyChain.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.IdentityModel.Selectors { using System; using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices; using System.Text; using System.Xml; // // For common // using Microsoft.InfoCards; // // Summary: // This class wraps and manages the lifetime of an array of PolicyElements that are to be Marshaled to // native memory. // internal class PolicyChain : IDisposable { HGlobalSafeHandle m_nativeChain; InternalPolicyElement[] m_chain; public int Length { get { return m_chain.Length; } } public PolicyChain( CardSpacePolicyElement[ ] elements ) { int length = elements.Length; m_chain = new InternalPolicyElement[ length ]; for( int i = 0; i < length; i++ ) { m_chain[ i ] = new InternalPolicyElement( elements[ i ] ); } } public SafeHandle DoMarshal() { if( null == m_nativeChain ) { int elementSize = InternalPolicyElement.Size; int chainLength = m_chain.Length; m_nativeChain = HGlobalSafeHandle.Construct( chainLength * elementSize ); IntPtr pos = m_nativeChain.DangerousGetHandle(); foreach( InternalPolicyElement element in m_chain ) { element.DoMarshal( pos ); unsafe { // // All this just to do pos += elementSize // pos = new IntPtr( (long)( ( (ulong) pos.ToPointer() ) + (ulong) elementSize ) ); } } } return m_nativeChain; } public void Dispose() { Dispose( true ); } ~PolicyChain() { Dispose( false ); } private void Dispose( bool disposing ) { if( disposing ) { GC.SuppressFinalize( this ); } if( null != m_chain ) { foreach( InternalPolicyElement element in m_chain ) { if( null != element ) { element.Dispose(); } } m_chain = null; } if( null != m_nativeChain ) { m_nativeChain.Dispose(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CursorEditor.cs
- SafeNativeMethods.cs
- HyperlinkAutomationPeer.cs
- SmiEventSink_Default.cs
- XmlDeclaration.cs
- GenericAuthenticationEventArgs.cs
- BrowserCapabilitiesCompiler.cs
- TraceLog.cs
- Component.cs
- SecurityPolicySection.cs
- CommandManager.cs
- TagMapInfo.cs
- NamespaceExpr.cs
- VolatileResourceManager.cs
- SqlSupersetValidator.cs
- ListChangedEventArgs.cs
- CultureMapper.cs
- XmlRootAttribute.cs
- AssemblyFilter.cs
- DesignerInterfaces.cs
- DetailsViewUpdateEventArgs.cs
- CodeAccessPermission.cs
- SmiEventStream.cs
- EncoderParameter.cs
- ETagAttribute.cs
- KeyNotFoundException.cs
- EventProperty.cs
- ClusterRegistryConfigurationProvider.cs
- WebExceptionStatus.cs
- AbstractExpressions.cs
- FormatException.cs
- EntityWithChangeTrackerStrategy.cs
- CodeTypeDeclaration.cs
- ResXBuildProvider.cs
- Decoder.cs
- GorillaCodec.cs
- StickyNoteAnnotations.cs
- DesignerHost.cs
- SQLInt64Storage.cs
- Button.cs
- SqlFunctionAttribute.cs
- ImageList.cs
- Lazy.cs
- ProgressPage.cs
- HttpCookieCollection.cs
- ListSourceHelper.cs
- SqlCommand.cs
- TiffBitmapDecoder.cs
- CodeTypeReference.cs
- RuleAttributes.cs
- ListViewSelectEventArgs.cs
- FileSecurity.cs
- CryptoApi.cs
- MultipartContentParser.cs
- ListBoxAutomationPeer.cs
- InputReport.cs
- ImmutableObjectAttribute.cs
- SettingsProperty.cs
- XPathEmptyIterator.cs
- MSHTMLHostUtil.cs
- IxmlLineInfo.cs
- SingleConverter.cs
- VirtualizedCellInfoCollection.cs
- ThicknessConverter.cs
- WebPartConnectionsEventArgs.cs
- figurelengthconverter.cs
- HtmlImageAdapter.cs
- HistoryEventArgs.cs
- RawStylusInputCustomDataList.cs
- FocusManager.cs
- ValidationService.cs
- ChineseLunisolarCalendar.cs
- ConnectorDragDropGlyph.cs
- DataObjectSettingDataEventArgs.cs
- ObjectDataSource.cs
- ThaiBuddhistCalendar.cs
- VerticalAlignConverter.cs
- InputLanguageProfileNotifySink.cs
- TrustManagerPromptUI.cs
- Viewport3DVisual.cs
- CharEnumerator.cs
- GreenMethods.cs
- HwndProxyElementProvider.cs
- ThreadStartException.cs
- ScrollEventArgs.cs
- Queue.cs
- StateManagedCollection.cs
- sqlser.cs
- PublisherMembershipCondition.cs
- PrivilegedConfigurationManager.cs
- HostExecutionContextManager.cs
- CodeDelegateInvokeExpression.cs
- DataGridViewImageCell.cs
- XmlDocumentType.cs
- DataPagerFieldItem.cs
- BulletChrome.cs
- TerminatorSinks.cs
- SqlCacheDependency.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- sqlcontext.cs