Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / RpcCryptoContext.cs / 1 / RpcCryptoContext.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.InfoCards { using System; using System.ComponentModel; using System.IO; using System.Runtime.InteropServices; using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace; // // Summary: // The context class for perfoming RpcCrypto operations. // internal class RpcCryptoContext : IDisposable { string m_portName; string m_contextKey; IntPtr m_idlHandle; object m_syncRoot; bool m_open; bool m_disposed; // // Summary: // Creates a new RpcCryptoContext // // Arguments: // portName: The name of the port // contextKey: The name of the context // public RpcCryptoContext( string portName, string contextKey ) { m_portName = portName; m_contextKey = contextKey; m_syncRoot = new object(); m_disposed = false; } // // Summary: // DTOR // ~RpcCryptoContext() { if( !m_disposed ) { ((IDisposable)this).Dispose(); } } // // Summary: // Gets the ContextKye. // public string ContextKey { get{ return m_contextKey; } } // // Summary: // Gets the native IdlHandle // public IntPtr InterfaceHandle { get{ return m_idlHandle; } } // // Summary: // Indicates if the context is still open. // public bool IsOpen { get{ return m_open; } } // // Summary: // Opens the context. // public void Open() { ThrowIfDisposed(); if( !m_open ) { try { m_idlHandle = NativeMcppMethods.RpcCryptoOpen( m_portName ); } catch( Win32Exception we ) { throw IDT.ThrowHelperError( new CommunicationException( null, we ) ); } m_open = true; } } // // Summary: // Closes the context. // public void Close() { if( m_open ) { try { NativeMcppMethods.RpcCryptoClose( m_idlHandle, m_contextKey ); } catch( Win32Exception we ) { throw IDT.ThrowHelperError( new CommunicationException( null, we ) ); } m_idlHandle = IntPtr.Zero; m_open = false; } } // // Summary: // Disposes the object if not alreay done. // void IDisposable.Dispose() { if( !m_disposed ) { lock( m_syncRoot ) { if( !m_disposed ) { m_disposed = true; try { Close(); } catch( CommunicationException ie ) { // // In case the RPC interface on the agent had already shutdown, // we will get this exception from Close( ) above. Dispose is NOT // expected to throw, so catch this specific exception here. // string msg = ie.Message; IDT.TraceDebug( "Ignoring failure in RpcCryptoContext Close(): " + msg ); } m_portName = null; m_contextKey = null; m_idlHandle = IntPtr.Zero; GC.SuppressFinalize( this ); } } } } void ThrowIfDisposed() { if( m_disposed ) { throw IDT.ThrowHelperError( new ObjectDisposedException( "RpcCryptoContext" ) ); } } } } // 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
- TypeConverterMarkupExtension.cs
- X509CertificateTrustedIssuerElementCollection.cs
- DataGridViewCheckBoxCell.cs
- DataBindingCollectionConverter.cs
- ObjectSelectorEditor.cs
- RadioButtonList.cs
- ResourceReferenceExpressionConverter.cs
- Effect.cs
- VectorValueSerializer.cs
- TimerElapsedEvenArgs.cs
- ValidationErrorCollection.cs
- SourceFileInfo.cs
- WebPartUserCapability.cs
- PersonalizablePropertyEntry.cs
- MultipleViewPattern.cs
- UpdatePanel.cs
- BulletedListEventArgs.cs
- XmlEnumAttribute.cs
- ErrorHandlerModule.cs
- NameValueCollection.cs
- SchemaMapping.cs
- ipaddressinformationcollection.cs
- SqlMethodAttribute.cs
- ListControlDesigner.cs
- SortedList.cs
- CodeEventReferenceExpression.cs
- Light.cs
- ListViewInsertionMark.cs
- ParserStreamGeometryContext.cs
- MemberBinding.cs
- TableLayoutSettings.cs
- SymLanguageVendor.cs
- AdvancedBindingPropertyDescriptor.cs
- MissingSatelliteAssemblyException.cs
- AttachmentCollection.cs
- GridViewColumnCollection.cs
- DataGridLinkButton.cs
- RuntimeConfigLKG.cs
- NavigatorInvalidBodyAccessException.cs
- DataGridViewCellFormattingEventArgs.cs
- ContainerUtilities.cs
- XPathSelectionIterator.cs
- mactripleDES.cs
- WebPartConnectionsCancelVerb.cs
- XDRSchema.cs
- QuotaThrottle.cs
- XmlLoader.cs
- InvokePattern.cs
- DeferredRunTextReference.cs
- FacetEnabledSchemaElement.cs
- ListItemParagraph.cs
- Substitution.cs
- ColorContextHelper.cs
- InkCanvasSelectionAdorner.cs
- HttpCacheVary.cs
- DbConnectionInternal.cs
- SingleObjectCollection.cs
- PnrpPeerResolverBindingElement.cs
- SamlAssertion.cs
- FunctionNode.cs
- ModuleBuilder.cs
- TimeZone.cs
- WebBaseEventKeyComparer.cs
- SelectManyQueryOperator.cs
- PropertyValueChangedEvent.cs
- PageBreakRecord.cs
- XsdBuildProvider.cs
- PathData.cs
- TableItemStyle.cs
- TreeViewAutomationPeer.cs
- FixedLineResult.cs
- TableCellsCollectionEditor.cs
- DnsEndPoint.cs
- SoapSchemaMember.cs
- OutputScopeManager.cs
- ManagedCodeMarkers.cs
- SurrogateDataContract.cs
- RegisteredDisposeScript.cs
- GetIsBrowserClientRequest.cs
- QuadraticBezierSegment.cs
- ViewCellSlot.cs
- CTreeGenerator.cs
- InternalsVisibleToAttribute.cs
- DisableDpiAwarenessAttribute.cs
- PriorityQueue.cs
- ValueTypeFixupInfo.cs
- SaveWorkflowCommand.cs
- DnsPermission.cs
- StateDesigner.TransitionInfo.cs
- HtmlUtf8RawTextWriter.cs
- BitStack.cs
- TemplateFactory.cs
- XhtmlBasicValidatorAdapter.cs
- XmlSchemaSimpleContentRestriction.cs
- SecurityTokenProvider.cs
- ObjectRef.cs
- GatewayDefinition.cs
- DataGridViewButtonColumn.cs
- AlgoModule.cs
- HttpContext.cs