Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Client / System / IdentityModel / Selectors / InternalPolicyElement.cs / 1 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FrugalList.cs
- Panel.cs
- XmlHelper.cs
- TypeInfo.cs
- IUnknownConstantAttribute.cs
- ScrollViewer.cs
- PropertyCondition.cs
- RedistVersionInfo.cs
- TrackingProfile.cs
- ToolStripSeparator.cs
- elementinformation.cs
- DataSysAttribute.cs
- MediaCommands.cs
- NotSupportedException.cs
- GridViewCellAutomationPeer.cs
- CqlQuery.cs
- MessageQueuePermission.cs
- SamlConditions.cs
- WeakHashtable.cs
- Size3DValueSerializer.cs
- CodeBinaryOperatorExpression.cs
- EventRoute.cs
- WebCategoryAttribute.cs
- InputGestureCollection.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- EntityStoreSchemaFilterEntry.cs
- Logging.cs
- HierarchicalDataBoundControlAdapter.cs
- PriorityQueue.cs
- ThaiBuddhistCalendar.cs
- ButtonFieldBase.cs
- SystemIcmpV4Statistics.cs
- GridViewUpdatedEventArgs.cs
- SQLBinaryStorage.cs
- WebPartMenu.cs
- CredentialManagerDialog.cs
- ComponentEditorForm.cs
- _NetRes.cs
- WorkflowElementDialogWindow.xaml.cs
- XmlDataLoader.cs
- AnnotationMap.cs
- EntityTransaction.cs
- ConstrainedGroup.cs
- SmtpCommands.cs
- EUCJPEncoding.cs
- DBBindings.cs
- ContentPropertyAttribute.cs
- DbReferenceCollection.cs
- XmlFormatReaderGenerator.cs
- DescendantQuery.cs
- XmlNamedNodeMap.cs
- WindowsStreamSecurityElement.cs
- PartManifestEntry.cs
- ImplicitInputBrush.cs
- ObjectSelectorEditor.cs
- EndpointDiscoveryElement.cs
- ThicknessConverter.cs
- SecurityTokenParametersEnumerable.cs
- ItemDragEvent.cs
- KeySpline.cs
- Overlapped.cs
- GenericWebPart.cs
- HtmlProps.cs
- ListItemConverter.cs
- PhoneCallDesigner.cs
- QueuePathDialog.cs
- DataGridItemCollection.cs
- OrderedDictionary.cs
- DataGridCell.cs
- ChangePasswordAutoFormat.cs
- BigInt.cs
- FileVersion.cs
- FigureParagraph.cs
- SrgsSubset.cs
- CompositeCollectionView.cs
- TypeUnloadedException.cs
- ButtonBaseAdapter.cs
- ViewGenResults.cs
- ClientScriptManager.cs
- Stack.cs
- PersianCalendar.cs
- WebExceptionStatus.cs
- PartBasedPackageProperties.cs
- ConfigWriter.cs
- DataGridViewRowCancelEventArgs.cs
- ProgressBar.cs
- StringHelper.cs
- HttpApplicationFactory.cs
- GridViewDeletedEventArgs.cs
- SearchForVirtualItemEventArgs.cs
- ProcessExitedException.cs
- EntityWithKeyStrategy.cs
- SettingsPropertyIsReadOnlyException.cs
- AppDomainShutdownMonitor.cs
- OracleTimeSpan.cs
- OperationFormatStyle.cs
- DeliveryRequirementsAttribute.cs
- NullableConverter.cs
- XmlNode.cs
- TimeSpanMinutesConverter.cs