Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / infocard / Client / System / IdentityModel / Selectors / InternalPolicyElement.cs / 1305376 / InternalPolicyElement.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; using Microsoft.InfoCards.Diagnostics; using IDT=Microsoft.InfoCards.Diagnostics.InfoCardTrace; // // Summary: // This is the managed representation of the native POLICY_ELEMENT struct. This internal version // knows how to Marshal itself and manages the native memory associated with a marshaled POLICY_ELEMENT. // internal class InternalPolicyElement : IDisposable { CardSpacePolicyElement m_element; NativePolicyElement m_nativeElement; IntPtr m_nativePtr; // // Parameters: // target - The target of the token being described. // parameters - describes the type of token required by the target. // public InternalPolicyElement( CardSpacePolicyElement element ) { m_nativePtr = IntPtr.Zero; if( null == element.Target ) { throw IDT.ThrowHelperArgumentNull( "PolicyElement.Target" ); } m_element = element; } public static int Size { get { return Marshal.SizeOf( typeof( NativePolicyElement ) ); } } // // Summary: // Marshals the PolicyElement to it's native format. // // Parameters: // ptr - A pointer to native memory in which to place the native format of the PolicyElement. Must be // a buffer atleast as large as this.Size. // public void DoMarshal( IntPtr ptr ) { string target = m_element.Target.OuterXml; string issuer = ""; IDT.DebugAssert( IntPtr.Zero == m_nativePtr, "Pointer already assigned" ); m_nativePtr = ptr; if( m_element.Issuer != null ) { issuer = m_element.Issuer.OuterXml; } string tokenParameters = string.Empty; if( null != m_element.Parameters ) { tokenParameters = CardSpaceSelector.XmlToString( m_element.Parameters ); } m_nativeElement.targetEndpointAddress = target; m_nativeElement.issuerEndpointAddress = issuer; m_nativeElement.issuedTokenParameters = tokenParameters; m_nativeElement.policyNoticeLink = null != m_element.PolicyNoticeLink ? m_element.PolicyNoticeLink.ToString() : null ; m_nativeElement.policyNoticeVersion = m_element.PolicyNoticeVersion; m_nativeElement.isManagedCardProvider = m_element.IsManagedIssuer; Marshal.StructureToPtr( m_nativeElement, ptr, false ); return; } public void Dispose() { Dispose( true ); } ~InternalPolicyElement() { Dispose( false ); } private void Dispose( bool disposing ) { if( IntPtr.Zero != m_nativePtr ) { Marshal.DestroyStructure( m_nativePtr, typeof( NativePolicyElement ) ); m_nativePtr = IntPtr.Zero; } if( disposing ) { GC.SuppressFinalize( this ); } } } } // 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; using Microsoft.InfoCards.Diagnostics; using IDT=Microsoft.InfoCards.Diagnostics.InfoCardTrace; // // Summary: // This is the managed representation of the native POLICY_ELEMENT struct. This internal version // knows how to Marshal itself and manages the native memory associated with a marshaled POLICY_ELEMENT. // internal class InternalPolicyElement : IDisposable { CardSpacePolicyElement m_element; NativePolicyElement m_nativeElement; IntPtr m_nativePtr; // // Parameters: // target - The target of the token being described. // parameters - describes the type of token required by the target. // public InternalPolicyElement( CardSpacePolicyElement element ) { m_nativePtr = IntPtr.Zero; if( null == element.Target ) { throw IDT.ThrowHelperArgumentNull( "PolicyElement.Target" ); } m_element = element; } public static int Size { get { return Marshal.SizeOf( typeof( NativePolicyElement ) ); } } // // Summary: // Marshals the PolicyElement to it's native format. // // Parameters: // ptr - A pointer to native memory in which to place the native format of the PolicyElement. Must be // a buffer atleast as large as this.Size. // public void DoMarshal( IntPtr ptr ) { string target = m_element.Target.OuterXml; string issuer = ""; IDT.DebugAssert( IntPtr.Zero == m_nativePtr, "Pointer already assigned" ); m_nativePtr = ptr; if( m_element.Issuer != null ) { issuer = m_element.Issuer.OuterXml; } string tokenParameters = string.Empty; if( null != m_element.Parameters ) { tokenParameters = CardSpaceSelector.XmlToString( m_element.Parameters ); } m_nativeElement.targetEndpointAddress = target; m_nativeElement.issuerEndpointAddress = issuer; m_nativeElement.issuedTokenParameters = tokenParameters; m_nativeElement.policyNoticeLink = null != m_element.PolicyNoticeLink ? m_element.PolicyNoticeLink.ToString() : null ; m_nativeElement.policyNoticeVersion = m_element.PolicyNoticeVersion; m_nativeElement.isManagedCardProvider = m_element.IsManagedIssuer; Marshal.StructureToPtr( m_nativeElement, ptr, false ); return; } public void Dispose() { Dispose( true ); } ~InternalPolicyElement() { Dispose( false ); } private void Dispose( bool disposing ) { if( IntPtr.Zero != m_nativePtr ) { Marshal.DestroyStructure( m_nativePtr, typeof( NativePolicyElement ) ); m_nativePtr = IntPtr.Zero; } if( disposing ) { GC.SuppressFinalize( this ); } } } } // 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
- MissingManifestResourceException.cs
- LayoutExceptionEventArgs.cs
- DecoderNLS.cs
- TemplateBaseAction.cs
- EventsTab.cs
- WarningException.cs
- ProgressBarBrushConverter.cs
- WinFormsComponentEditor.cs
- MemoryRecordBuffer.cs
- RectangleHotSpot.cs
- HttpHandlerAction.cs
- KeysConverter.cs
- TemplateBamlTreeBuilder.cs
- ItemList.cs
- RefreshPropertiesAttribute.cs
- FixedPosition.cs
- XhtmlTextWriter.cs
- SharedDp.cs
- PrintSchema.cs
- ChangeNode.cs
- SqlFunctionAttribute.cs
- Typeface.cs
- HelpProvider.cs
- LeafCellTreeNode.cs
- ExeConfigurationFileMap.cs
- EndpointIdentityExtension.cs
- ToolboxControl.cs
- SafeEventHandle.cs
- ParserExtension.cs
- PageParserFilter.cs
- StopStoryboard.cs
- XmlLanguageConverter.cs
- StyleTypedPropertyAttribute.cs
- CompositeActivityValidator.cs
- CryptoHandle.cs
- GeneratedContractType.cs
- ScrollableControl.cs
- DataGridViewSelectedCellCollection.cs
- FontCacheUtil.cs
- ExpressionContext.cs
- UrlMappingCollection.cs
- DesignConnectionCollection.cs
- FormsAuthenticationUserCollection.cs
- ObjectItemLoadingSessionData.cs
- SqlTypesSchemaImporter.cs
- DeploymentSection.cs
- SecurityException.cs
- X509ClientCertificateAuthenticationElement.cs
- DataSetUtil.cs
- FastPropertyAccessor.cs
- RegexTypeEditor.cs
- ArrangedElement.cs
- ReadOnlyDataSourceView.cs
- HtmlShimManager.cs
- StylusPointProperties.cs
- TerminatorSinks.cs
- CreateUserWizard.cs
- FlowLayoutSettings.cs
- GeneralTransform3DGroup.cs
- SqlBuilder.cs
- InstancePersistenceEvent.cs
- MobileCategoryAttribute.cs
- ByteAnimationBase.cs
- ViewKeyConstraint.cs
- PrinterSettings.cs
- HostSecurityManager.cs
- SurrogateChar.cs
- StringFreezingAttribute.cs
- FrameworkPropertyMetadata.cs
- NetNamedPipeSecurityElement.cs
- ServerIdentity.cs
- ProgressChangedEventArgs.cs
- NumberEdit.cs
- OdbcCommandBuilder.cs
- CompensationDesigner.cs
- RepeatInfo.cs
- WindowProviderWrapper.cs
- HttpResponse.cs
- MenuTracker.cs
- COM2ExtendedTypeConverter.cs
- SchemaMerger.cs
- TextMessageEncoder.cs
- NotImplementedException.cs
- FixedTextPointer.cs
- Listener.cs
- TitleStyle.cs
- ControlAdapter.cs
- EdmConstants.cs
- RedistVersionInfo.cs
- DSACryptoServiceProvider.cs
- BindingGroup.cs
- Rect.cs
- FilterRepeater.cs
- ListViewEditEventArgs.cs
- documentsequencetextpointer.cs
- grammarelement.cs
- Form.cs
- WpfMemberInvoker.cs
- NativeActivityMetadata.cs
- OpenTypeLayout.cs