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
- SurrogateSelector.cs
- BufferedResponseStream.cs
- ReferenceEqualityComparer.cs
- ArgumentNullException.cs
- TransformProviderWrapper.cs
- DetailsViewRowCollection.cs
- SpnegoTokenProvider.cs
- SqlTopReducer.cs
- WebPartEditVerb.cs
- DoubleLink.cs
- Transactions.cs
- LostFocusEventManager.cs
- StylusButtonCollection.cs
- DocumentViewerConstants.cs
- PageParserFilter.cs
- PasswordDeriveBytes.cs
- MappedMetaModel.cs
- ListDictionaryInternal.cs
- CollectionViewSource.cs
- UnionExpr.cs
- panel.cs
- LeftCellWrapper.cs
- MatrixCamera.cs
- MemberAccessException.cs
- _FtpDataStream.cs
- SelectionEditingBehavior.cs
- RenderingEventArgs.cs
- ConfigPathUtility.cs
- ErrorReporting.cs
- Error.cs
- SqlNodeAnnotations.cs
- XamlParser.cs
- ListMarkerLine.cs
- FormParameter.cs
- BitmapMetadata.cs
- WmpBitmapDecoder.cs
- Button.cs
- PassportIdentity.cs
- ChannelDispatcher.cs
- dtdvalidator.cs
- XmlEnumAttribute.cs
- MediaElementAutomationPeer.cs
- PresentationTraceSources.cs
- ClipboardData.cs
- EditorZoneDesigner.cs
- LineVisual.cs
- DropSource.cs
- WebScriptEnablingBehavior.cs
- RemoteX509Token.cs
- AffineTransform3D.cs
- XPathPatternParser.cs
- AnnotationAdorner.cs
- List.cs
- CompressedStack.cs
- UpdateCompiler.cs
- DataServices.cs
- RadioButtonList.cs
- ReflectTypeDescriptionProvider.cs
- HttpCacheVaryByContentEncodings.cs
- QilLiteral.cs
- CellIdBoolean.cs
- LinkTarget.cs
- TextBoxAutomationPeer.cs
- NeutralResourcesLanguageAttribute.cs
- RectConverter.cs
- Int32Converter.cs
- SqlSelectStatement.cs
- SessionConnectionReader.cs
- PasswordValidationException.cs
- SoapExtensionTypeElement.cs
- CommandLineParser.cs
- CodeTypeDeclaration.cs
- AmbientLight.cs
- MenuBindingsEditor.cs
- Rss20FeedFormatter.cs
- HyperLinkColumn.cs
- LockedActivityGlyph.cs
- Table.cs
- Literal.cs
- DispatchWrapper.cs
- UiaCoreProviderApi.cs
- ToolStripSystemRenderer.cs
- SymbolTable.cs
- XamlFigureLengthSerializer.cs
- RelationshipWrapper.cs
- XmlDataSource.cs
- DataSourceControl.cs
- ContentType.cs
- NamedPermissionSet.cs
- BinaryConverter.cs
- ExecutionScope.cs
- CodeGroup.cs
- RadioButtonAutomationPeer.cs
- X509IssuerSerialKeyIdentifierClause.cs
- EmptyQuery.cs
- SymDocumentType.cs
- UnauthorizedAccessException.cs
- OleDbWrapper.cs
- WindowsStreamSecurityElement.cs
- PackagePartCollection.cs