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
- OutputCacheModule.cs
- CharacterBuffer.cs
- Calendar.cs
- UrlPropertyAttribute.cs
- Operators.cs
- storepermissionattribute.cs
- AnnotationHighlightLayer.cs
- DataListAutoFormat.cs
- Page.cs
- ObfuscationAttribute.cs
- ReaderWriterLockSlim.cs
- shaperfactory.cs
- propertytag.cs
- XmlDesignerDataSourceView.cs
- bindurihelper.cs
- Point3DKeyFrameCollection.cs
- ProfileSettingsCollection.cs
- ListView.cs
- SigningDialog.cs
- FormattedText.cs
- XmlWrappingWriter.cs
- MdImport.cs
- Freezable.cs
- UnsafeNativeMethodsTablet.cs
- OpenTypeLayout.cs
- LineMetrics.cs
- GetWinFXPath.cs
- XmlILOptimizerVisitor.cs
- ReliabilityContractAttribute.cs
- EntitySetDataBindingList.cs
- BitmapEffectDrawing.cs
- AudioException.cs
- InvalidDataException.cs
- DataFormats.cs
- LinqDataSourceDeleteEventArgs.cs
- EnumConverter.cs
- RuntimeWrappedException.cs
- GrammarBuilderPhrase.cs
- Int32Rect.cs
- Console.cs
- XmlNode.cs
- SqlUDTStorage.cs
- ReadOnlyCollectionBase.cs
- AdornerDecorator.cs
- FunctionMappingTranslator.cs
- ParenExpr.cs
- CookieProtection.cs
- SafePEFileHandle.cs
- SchemaTableColumn.cs
- Converter.cs
- EDesignUtil.cs
- RoutedCommand.cs
- IApplicationTrustManager.cs
- DataExpression.cs
- AppearanceEditorPart.cs
- CodeAttributeDeclaration.cs
- SharedPersonalizationStateInfo.cs
- MediaPlayer.cs
- HtmlInputCheckBox.cs
- DataGridViewTextBoxColumn.cs
- StringSorter.cs
- ObjectToken.cs
- CustomAttributeFormatException.cs
- PathStreamGeometryContext.cs
- Exceptions.cs
- StringStorage.cs
- DbDataReader.cs
- TimelineGroup.cs
- Context.cs
- ExplicitDiscriminatorMap.cs
- WindowsSpinner.cs
- ZipIOLocalFileDataDescriptor.cs
- ScaleTransform.cs
- SecurityDocument.cs
- TreeNodeStyleCollection.cs
- SqlTriggerAttribute.cs
- NameTable.cs
- Route.cs
- DbReferenceCollection.cs
- TemplateKeyConverter.cs
- ValidationSummary.cs
- TableSectionStyle.cs
- SystemIcons.cs
- HasCopySemanticsAttribute.cs
- UriTemplateTrieNode.cs
- DataControlLinkButton.cs
- WindowsStatic.cs
- MessageDescriptionCollection.cs
- ReflectionServiceProvider.cs
- JsonServiceDocumentSerializer.cs
- GenericIdentity.cs
- SwitchElementsCollection.cs
- EventProxy.cs
- PersistenceTypeAttribute.cs
- XmlWrappingReader.cs
- EntityDataSourceConfigureObjectContextPanel.cs
- ListViewDesigner.cs
- TextWriterTraceListener.cs
- TextFormatterContext.cs
- ParameterInfo.cs