Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ // 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
- XPathExpr.cs
- OdbcParameterCollection.cs
- OdbcErrorCollection.cs
- ValidationErrorCollection.cs
- WorkflowApplicationTerminatedException.cs
- FastPropertyAccessor.cs
- InputProviderSite.cs
- TaskExceptionHolder.cs
- ToolStripControlHost.cs
- TdsParserHelperClasses.cs
- BitmapEncoder.cs
- DesignerLoader.cs
- ColumnReorderedEventArgs.cs
- CqlLexerHelpers.cs
- OdbcConnectionFactory.cs
- _ProxyRegBlob.cs
- FloatUtil.cs
- BaseCodePageEncoding.cs
- WebControl.cs
- CngAlgorithmGroup.cs
- DesigntimeLicenseContextSerializer.cs
- PointLight.cs
- PauseStoryboard.cs
- Constant.cs
- ObjectDataSourceEventArgs.cs
- KeyedByTypeCollection.cs
- CounterSample.cs
- codemethodreferenceexpression.cs
- Size3DConverter.cs
- IsolationInterop.cs
- SystemKeyConverter.cs
- NamedElement.cs
- DataSourceView.cs
- MeshGeometry3D.cs
- TextTreeTextElementNode.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- OutputCacheSettings.cs
- TextDecorationCollection.cs
- Tile.cs
- RequestReplyCorrelator.cs
- ProfilePropertySettings.cs
- Gdiplus.cs
- OciLobLocator.cs
- WebException.cs
- KeyValueConfigurationCollection.cs
- WeakReferenceKey.cs
- InvalidCommandTreeException.cs
- WebZone.cs
- RedirectionProxy.cs
- Hash.cs
- MultiSelector.cs
- GroupedContextMenuStrip.cs
- KeySplineConverter.cs
- GeometryValueSerializer.cs
- StateDesigner.cs
- SqlConnection.cs
- TypeSchema.cs
- SkinBuilder.cs
- DbConnectionInternal.cs
- Section.cs
- Completion.cs
- SamlDoNotCacheCondition.cs
- RemotingClientProxy.cs
- ApplicationServiceHelper.cs
- WebServiceClientProxyGenerator.cs
- WorkflowRuntimeServiceElementCollection.cs
- SqlDataReaderSmi.cs
- Latin1Encoding.cs
- XDRSchema.cs
- IntranetCredentialPolicy.cs
- NoneExcludedImageIndexConverter.cs
- BinaryMessageEncodingElement.cs
- WindowsGraphicsWrapper.cs
- ProxyWebPart.cs
- Path.cs
- SymmetricCryptoHandle.cs
- BuildManagerHost.cs
- ProtocolsConfigurationHandler.cs
- DataService.cs
- NativeMethods.cs
- ListViewContainer.cs
- IntegrationExceptionEventArgs.cs
- DocumentViewerBaseAutomationPeer.cs
- AdapterDictionary.cs
- DirectionalLight.cs
- SqlDependencyUtils.cs
- RightsController.cs
- ExpressionBindingCollection.cs
- UnsafeNativeMethods.cs
- CredentialCache.cs
- WebPartEditorCancelVerb.cs
- ResourcePool.cs
- TypeDescriptor.cs
- ImageBrush.cs
- QilPatternFactory.cs
- WmlImageAdapter.cs
- InternalMappingException.cs
- TemplateKeyConverter.cs
- HGlobalSafeHandle.cs
- CompositeFontInfo.cs