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
- PackageDigitalSignatureManager.cs
- ProfilePropertyNameValidator.cs
- QuaternionValueSerializer.cs
- StylusPlugin.cs
- oledbmetadatacollectionnames.cs
- SR.cs
- ApplicationHost.cs
- ControlPropertyNameConverter.cs
- OdbcStatementHandle.cs
- SafeCoTaskMem.cs
- DataListItemCollection.cs
- SamlAssertionDirectKeyIdentifierClause.cs
- LookupBindingPropertiesAttribute.cs
- CSharpCodeProvider.cs
- HandledEventArgs.cs
- VirtualizedItemProviderWrapper.cs
- ToggleProviderWrapper.cs
- SubMenuStyleCollection.cs
- IPipelineRuntime.cs
- SizeConverter.cs
- ReadOnlyTernaryTree.cs
- COM2FontConverter.cs
- DataSourceProvider.cs
- DBSqlParserColumn.cs
- ServiceReference.cs
- DataBoundControlHelper.cs
- CatalogPartCollection.cs
- ChangeBlockUndoRecord.cs
- NativeMethods.cs
- NominalTypeEliminator.cs
- EventLogPermissionAttribute.cs
- QilReference.cs
- FormViewCommandEventArgs.cs
- Win32.cs
- BamlLocalizableResource.cs
- TextEmbeddedObject.cs
- DesignerForm.cs
- ParameterReplacerVisitor.cs
- IndependentAnimationStorage.cs
- KeyedCollection.cs
- InputScopeNameConverter.cs
- ByteRangeDownloader.cs
- FileSystemEventArgs.cs
- SqlFacetAttribute.cs
- SoapReflector.cs
- PointLightBase.cs
- RootBrowserWindowProxy.cs
- XsltFunctions.cs
- UndoManager.cs
- BindValidator.cs
- ClientSettingsStore.cs
- SocketElement.cs
- ADRoleFactory.cs
- FlowLayout.cs
- ECDiffieHellmanCngPublicKey.cs
- CompilerState.cs
- StopRoutingHandler.cs
- ToolboxItemFilterAttribute.cs
- LoadWorkflowByInstanceKeyCommand.cs
- _ChunkParse.cs
- CompositeFontParser.cs
- FixedPageAutomationPeer.cs
- ItemsPanelTemplate.cs
- EventSetter.cs
- unitconverter.cs
- NumberFormatInfo.cs
- EventItfInfo.cs
- Documentation.cs
- ClientUriBehavior.cs
- DataGridParentRows.cs
- DES.cs
- SHA384.cs
- FunctionImportElement.cs
- UnlockInstanceCommand.cs
- MenuItem.cs
- SymbolTable.cs
- TargetPerspective.cs
- GridLength.cs
- DoubleLinkList.cs
- SelectionService.cs
- GroupStyle.cs
- WindowsRichEdit.cs
- LogExtentCollection.cs
- GridProviderWrapper.cs
- ApplicationId.cs
- OwnerDrawPropertyBag.cs
- Convert.cs
- HostVisual.cs
- DataGridViewLinkColumn.cs
- SqlParameterCollection.cs
- ProfileGroupSettingsCollection.cs
- TargetFrameworkUtil.cs
- Switch.cs
- RowSpanVector.cs
- TableRowCollection.cs
- FontFamilyValueSerializer.cs
- BooleanFunctions.cs
- ServiceDescriptionImporter.cs
- Misc.cs
- Domain.cs