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
- WorkflowRuntimeElement.cs
- RegionIterator.cs
- FactoryRecord.cs
- DataListItemCollection.cs
- WsdlImporterElementCollection.cs
- PassportPrincipal.cs
- CompilerResults.cs
- CurrencyWrapper.cs
- GlyphTypeface.cs
- PropertyBuilder.cs
- WindowsPen.cs
- BStrWrapper.cs
- PointConverter.cs
- ManagedIStream.cs
- Block.cs
- SafeBitVector32.cs
- EDesignUtil.cs
- TextPointer.cs
- MediaPlayerState.cs
- AnimationLayer.cs
- EmbeddedMailObject.cs
- ContourSegment.cs
- SocketElement.cs
- XamlToRtfWriter.cs
- ValueType.cs
- Timeline.cs
- DataServiceResponse.cs
- URLAttribute.cs
- SelectionManager.cs
- DateTime.cs
- ReflectionUtil.cs
- WebPartConnectionsConnectVerb.cs
- EmbeddedMailObject.cs
- SoapHeaders.cs
- KerberosTicketHashIdentifierClause.cs
- SoapIncludeAttribute.cs
- TracingConnection.cs
- FixedBufferAttribute.cs
- ImageDrawing.cs
- RealizationDrawingContextWalker.cs
- CLRBindingWorker.cs
- ScheduleChanges.cs
- RuleProcessor.cs
- RelationshipDetailsRow.cs
- ManagementObjectCollection.cs
- Adorner.cs
- BitmapEffectGroup.cs
- MatrixTransform.cs
- xml.cs
- Base64Decoder.cs
- CacheHelper.cs
- URIFormatException.cs
- XmlAtomicValue.cs
- TagMapInfo.cs
- XmlEntityReference.cs
- XmlArrayItemAttributes.cs
- GeneralTransformCollection.cs
- PersistenceProviderBehavior.cs
- BaseTreeIterator.cs
- IUnknownConstantAttribute.cs
- SqlBinder.cs
- ColumnCollection.cs
- PanelStyle.cs
- TrackingServices.cs
- AnnotationHighlightLayer.cs
- ButtonBase.cs
- ParamArrayAttribute.cs
- SiteMapDataSource.cs
- MimeMapping.cs
- EntityContainerRelationshipSet.cs
- OutputScope.cs
- Application.cs
- MexNamedPipeBindingCollectionElement.cs
- HtmlToClrEventProxy.cs
- PointCollectionValueSerializer.cs
- EDesignUtil.cs
- BidPrivateBase.cs
- OrthographicCamera.cs
- ISCIIEncoding.cs
- BuildProviderAppliesToAttribute.cs
- SafeEventHandle.cs
- ProcessInfo.cs
- SessionStateModule.cs
- ClientBuildManager.cs
- AvTraceDetails.cs
- BCLDebug.cs
- AssemblyAssociatedContentFileAttribute.cs
- TextRange.cs
- BinaryReader.cs
- BamlResourceDeserializer.cs
- SqlDependencyListener.cs
- ClientTargetCollection.cs
- ButtonFlatAdapter.cs
- RemoteWebConfigurationHost.cs
- MetadataConversionError.cs
- GuidTagList.cs
- SqlTransaction.cs
- DbException.cs
- ComponentResourceManager.cs
- ConstraintManager.cs