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
- SchemaCollectionCompiler.cs
- ComboBox.cs
- Boolean.cs
- FactoryId.cs
- TextFindEngine.cs
- ping.cs
- ItemsChangedEventArgs.cs
- GridViewDeletedEventArgs.cs
- GridViewDeleteEventArgs.cs
- TextShapeableCharacters.cs
- WorkflowShape.cs
- _TransmitFileOverlappedAsyncResult.cs
- SplitterCancelEvent.cs
- ParameterReplacerVisitor.cs
- CertificateManager.cs
- DeleteMemberBinder.cs
- BaseParagraph.cs
- _FtpDataStream.cs
- DataGridColumnHeader.cs
- TextOnlyOutput.cs
- WindowsEditBox.cs
- RelatedCurrencyManager.cs
- KeyValueConfigurationElement.cs
- Int16Storage.cs
- OracleBinary.cs
- XmlDownloadManager.cs
- InvalidCommandTreeException.cs
- unsafeIndexingFilterStream.cs
- Utilities.cs
- WCFServiceClientProxyGenerator.cs
- FrameworkRichTextComposition.cs
- DbConnectionPoolOptions.cs
- COM2Enum.cs
- XPathDocument.cs
- EventDescriptor.cs
- Material.cs
- XamlRtfConverter.cs
- ListViewDeletedEventArgs.cs
- Pair.cs
- Focus.cs
- Stylus.cs
- DbCommandTree.cs
- DefinitionUpdate.cs
- HexParser.cs
- ArgumentDirectionHelper.cs
- DataGridViewColumnEventArgs.cs
- OrderByLifter.cs
- PersonalizationDictionary.cs
- TrustManagerPromptUI.cs
- XmlTextAttribute.cs
- SqlProviderManifest.cs
- ManifestSignatureInformation.cs
- SendKeys.cs
- CapabilitiesPattern.cs
- MessageQueuePermissionAttribute.cs
- TreeNodeClickEventArgs.cs
- DelegatedStream.cs
- UniqueID.cs
- Application.cs
- AssertFilter.cs
- TableStyle.cs
- TreeViewHitTestInfo.cs
- MobilePage.cs
- StylusDownEventArgs.cs
- ToolStripDropDownClosedEventArgs.cs
- CodeStatementCollection.cs
- BorderGapMaskConverter.cs
- SqlClientPermission.cs
- ObjectConverter.cs
- WindowsScrollBarBits.cs
- TraceContextRecord.cs
- ProfileModule.cs
- DataPagerFieldCommandEventArgs.cs
- WorkflowRuntimeService.cs
- AttributeSetAction.cs
- DictionaryBase.cs
- _RequestCacheProtocol.cs
- CaseInsensitiveComparer.cs
- RestrictedTransactionalPackage.cs
- ValidationRuleCollection.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- Size3DValueSerializer.cs
- relpropertyhelper.cs
- RenderDataDrawingContext.cs
- RelationshipFixer.cs
- _SingleItemRequestCache.cs
- InteropAutomationProvider.cs
- PaperSize.cs
- Misc.cs
- XmlWriterDelegator.cs
- CustomLineCap.cs
- SystemPens.cs
- ToolStripGripRenderEventArgs.cs
- PtsHelper.cs
- ContractReference.cs
- MemberProjectedSlot.cs
- XmlReflectionImporter.cs
- TimelineCollection.cs
- RoutedUICommand.cs
- PropertySourceInfo.cs