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
- Message.cs
- SQLStringStorage.cs
- AnnotationHighlightLayer.cs
- RadioButtonList.cs
- PlatformCulture.cs
- ExternalException.cs
- AutomationPatternInfo.cs
- ListViewItem.cs
- SchemaDeclBase.cs
- ImageListStreamer.cs
- XamlTypeMapperSchemaContext.cs
- MapPathBasedVirtualPathProvider.cs
- CompiledAction.cs
- GetPageCompletedEventArgs.cs
- TabPage.cs
- UnsafeNativeMethods.cs
- HtmlInputSubmit.cs
- DPAPIProtectedConfigurationProvider.cs
- XmlCharType.cs
- Label.cs
- Overlapped.cs
- TextParagraph.cs
- dbdatarecord.cs
- DetailsViewRow.cs
- MessageSmuggler.cs
- sqlser.cs
- ListViewGroup.cs
- EntityConnection.cs
- BufferedGraphics.cs
- ConditionalBranch.cs
- Logging.cs
- DiagnosticsConfiguration.cs
- EventItfInfo.cs
- HtmlInputReset.cs
- DataSourceConverter.cs
- CompilerTypeWithParams.cs
- WebPartUtil.cs
- _UriSyntax.cs
- ExecutedRoutedEventArgs.cs
- OracleParameterCollection.cs
- PlatformCulture.cs
- InputBindingCollection.cs
- EditorAttribute.cs
- ResolveCriteriaApril2005.cs
- ConfigurationStrings.cs
- EncodingTable.cs
- TraceXPathNavigator.cs
- MonthChangedEventArgs.cs
- UpDownBase.cs
- InvokeProviderWrapper.cs
- QueryException.cs
- WeakEventTable.cs
- Path.cs
- ProtocolElementCollection.cs
- ErrorInfoXmlDocument.cs
- Identity.cs
- AssemblyNameUtility.cs
- MessageSecurityProtocol.cs
- Attributes.cs
- LingerOption.cs
- XmlSchemaAttributeGroupRef.cs
- NetworkInformationException.cs
- DesignerActionPanel.cs
- SrgsDocument.cs
- TextParagraph.cs
- String.cs
- SizeF.cs
- ListSourceHelper.cs
- DocumentViewerAutomationPeer.cs
- ImageFormat.cs
- TemplateNameScope.cs
- Point4DValueSerializer.cs
- DomNameTable.cs
- TrackBarDesigner.cs
- TranslateTransform3D.cs
- DrawListViewSubItemEventArgs.cs
- Scheduling.cs
- TraceHandler.cs
- FlowDocument.cs
- MetadataStore.cs
- ObjectDataSourceWizardForm.cs
- DesignerSelectionListAdapter.cs
- Win32MouseDevice.cs
- ProgressBar.cs
- DurableOperationContext.cs
- AnnotationComponentChooser.cs
- FirstQueryOperator.cs
- XmlSchemaSet.cs
- Point4D.cs
- ScaleTransform.cs
- XmlILConstructAnalyzer.cs
- TransformerInfoCollection.cs
- FamilyMap.cs
- ButtonDesigner.cs
- BoolExpressionVisitors.cs
- QueryOutputWriter.cs
- IntPtr.cs
- FilterException.cs
- BindUriHelper.cs
- MinMaxParagraphWidth.cs