Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SessionStateUtil.cs
- BindingExpressionBase.cs
- MethodBody.cs
- BaseUriHelper.cs
- ActivityXRefConverter.cs
- SqlCachedBuffer.cs
- safesecurityhelperavalon.cs
- GCHandleCookieTable.cs
- NotifyIcon.cs
- OdbcConnection.cs
- FunctionImportElement.cs
- ClientSettingsSection.cs
- IPHostEntry.cs
- InvokeMethod.cs
- MetaModel.cs
- URLIdentityPermission.cs
- FaultCallbackWrapper.cs
- StreamWriter.cs
- UnsupportedPolicyOptionsException.cs
- ColumnClickEvent.cs
- DropShadowBitmapEffect.cs
- FileEnumerator.cs
- DateTimeFormat.cs
- HashCodeCombiner.cs
- RunWorkerCompletedEventArgs.cs
- Ray3DHitTestResult.cs
- linebase.cs
- SendSecurityHeaderElementContainer.cs
- AuthenticationException.cs
- DataBinder.cs
- CodeDefaultValueExpression.cs
- CriticalHandle.cs
- TreeViewCancelEvent.cs
- AnnotationHighlightLayer.cs
- EngineSiteSapi.cs
- MDIWindowDialog.cs
- DocumentScope.cs
- StreamGeometry.cs
- ImageMetadata.cs
- RegistrationServices.cs
- ASCIIEncoding.cs
- VirtualPathProvider.cs
- TreeIterators.cs
- SessionIDManager.cs
- TextBlockAutomationPeer.cs
- XmlNamespaceManager.cs
- PolicyException.cs
- Attributes.cs
- KeyPressEvent.cs
- TraceListeners.cs
- Selector.cs
- EditBehavior.cs
- FacetEnabledSchemaElement.cs
- SqlConnectionStringBuilder.cs
- QuadraticBezierSegment.cs
- AnnotationDocumentPaginator.cs
- HttpModuleActionCollection.cs
- IDispatchConstantAttribute.cs
- _ListenerAsyncResult.cs
- ComNativeDescriptor.cs
- CodeDirectionExpression.cs
- NavigationCommands.cs
- ToolStripItemImageRenderEventArgs.cs
- ClientBuildManagerCallback.cs
- FrugalMap.cs
- WizardPanel.cs
- WindowsAuthenticationModule.cs
- OdbcCommandBuilder.cs
- LayoutTableCell.cs
- UndoManager.cs
- RegexTree.cs
- FormatterServices.cs
- EntityPropertyMappingAttribute.cs
- HTTPRemotingHandler.cs
- ProfessionalColors.cs
- FontEmbeddingManager.cs
- isolationinterop.cs
- EncryptedXml.cs
- Util.cs
- AmbiguousMatchException.cs
- PeerApplicationLaunchInfo.cs
- TypeContext.cs
- TextServicesManager.cs
- PropertyEntry.cs
- ZeroOpNode.cs
- TraceHwndHost.cs
- DataObject.cs
- ProfessionalColorTable.cs
- CellQuery.cs
- FileUpload.cs
- ClientRuntimeConfig.cs
- DataGridView.cs
- SessionEndingEventArgs.cs
- QuaternionIndependentAnimationStorage.cs
- TransformGroup.cs
- ThicknessConverter.cs
- ToolZone.cs
- ErrorWebPart.cs
- PropertyValueChangedEvent.cs
- MultilineStringConverter.cs