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
- LeftCellWrapper.cs
- IPCCacheManager.cs
- SmtpLoginAuthenticationModule.cs
- XmlSchemaObject.cs
- HtmlInputImage.cs
- FormsAuthenticationModule.cs
- TextFormatter.cs
- Monitor.cs
- Environment.cs
- OdbcConnectionPoolProviderInfo.cs
- EncoderBestFitFallback.cs
- SafeProcessHandle.cs
- PointConverter.cs
- WinCategoryAttribute.cs
- SynchronizingStream.cs
- CommentEmitter.cs
- Tracking.cs
- ScriptHandlerFactory.cs
- ContourSegment.cs
- PointLightBase.cs
- DoubleKeyFrameCollection.cs
- HtmlControl.cs
- ClientTarget.cs
- SequenceRangeCollection.cs
- UnsafeNativeMethods.cs
- AQNBuilder.cs
- ConsoleCancelEventArgs.cs
- CodeDOMUtility.cs
- NoneExcludedImageIndexConverter.cs
- ArcSegment.cs
- UriExt.cs
- ServiceModelConfigurationElementCollection.cs
- OleDbSchemaGuid.cs
- InternalDispatchObject.cs
- GroupBox.cs
- TextAction.cs
- AssemblySettingAttributes.cs
- NotConverter.cs
- FontInfo.cs
- RemoteTokenFactory.cs
- DataGridParentRows.cs
- CheckBox.cs
- MultiBindingExpression.cs
- DigestComparer.cs
- TCPClient.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- PopupControlService.cs
- JpegBitmapEncoder.cs
- ActivityCodeDomSerializationManager.cs
- TreeNodeClickEventArgs.cs
- CacheManager.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- QueryRewriter.cs
- DetailsViewRowCollection.cs
- StrokeNodeOperations.cs
- TypeSystem.cs
- ToolStripRenderer.cs
- DbConnectionPoolCounters.cs
- OutputChannel.cs
- FamilyCollection.cs
- ConfigXmlSignificantWhitespace.cs
- BuilderInfo.cs
- HttpConfigurationSystem.cs
- CodeFieldReferenceExpression.cs
- HtmlInputReset.cs
- PageContentCollection.cs
- NotifyIcon.cs
- EdmPropertyAttribute.cs
- ConstrainedDataObject.cs
- DefaultObjectMappingItemCollection.cs
- SamlEvidence.cs
- MessageUtil.cs
- NullableBoolConverter.cs
- ControlType.cs
- FromRequest.cs
- EventLogPermissionHolder.cs
- ForceCopyBuildProvider.cs
- Decimal.cs
- CheckBoxFlatAdapter.cs
- PassportAuthenticationModule.cs
- ApplicationFileParser.cs
- HandleRef.cs
- ExternalException.cs
- SpellerStatusTable.cs
- UpdatePanel.cs
- FormatConvertedBitmap.cs
- AsyncPostBackErrorEventArgs.cs
- CqlQuery.cs
- RouteParametersHelper.cs
- ToolZone.cs
- InternalBufferOverflowException.cs
- MultipartContentParser.cs
- WebInvokeAttribute.cs
- XmlSchemaDatatype.cs
- TextPatternIdentifiers.cs
- SharedConnectionInfo.cs
- RequestSecurityToken.cs
- TransferRequestHandler.cs
- EnterpriseServicesHelper.cs
- HtmlSelect.cs