Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / AddIn / AddIn / System / Addin / Hosting / RemotingHelper.cs / 1305376 / RemotingHelper.cs
using System; using System.Collections.Generic; using System.Text; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Ipc; namespace System.AddIn.Hosting { internal static class RemotingHelper { // runtime initializes this to false; static bool CreatedInAD; static readonly Object s_lock = new Object(); internal static readonly String s_emptyGuid = Guid.Empty.ToString(); //// [System.Security.SecuritySafeCritical] [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Assert, Flags = System.Security.Permissions.SecurityPermissionFlag.RemotingConfiguration | System.Security.Permissions.SecurityPermissionFlag.Infrastructure)] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security","CA2116:AptcaMethodsShouldOnlyCallAptcaMethods")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2129:SecurityTransparentCodeShouldNotReferenceNonpublicSecurityCriticalCode", Justification = "This is a SecurityRules.Level1 assembly, in which this rule is being incorrectly applied")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2128:SecurityTransparentCodeShouldNotAssert", Justification = "This is a SecurityRules.Level1 assembly, in which this rule is being incorrectly applied")] internal static void InitializeClientChannel() { lock(s_lock) { if (CreatedInAD) // only one client channel per AD return; CreatedInAD = true; // make sure this hasn't been created already in this AD // BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider(); serverProvider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full; BinaryClientFormatterSinkProvider clientProvider = new BinaryClientFormatterSinkProvider(); System.Collections.IDictionary props = new System.Collections.Hashtable(); props["name"] = "ClientChannel"; props["portName"] = Guid.NewGuid().ToString(); props["typeFilterLevel"] = "Full"; // When communicating between application domains on the same computer, the ipc channel is much faster than the tcp IChannel ichannel = new AddInIpcChannel(props, clientProvider, serverProvider); // ( ChannelServices.RegisterChannel(ichannel, false); } } // AddinServer is a singleton per process. It is created at process creation. // The AddinServer is the Marshaled class used to hook up the Client and Server remoting channel. //// // // // // // [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Justification = "Reviewed")] [System.Security.SecuritySafeCritical] internal static AddInServer GetAddInServer(string guid) { System.Diagnostics.Contracts.Contract.Requires(guid != null && guid != s_emptyGuid); return (AddInServer)Activator.GetObject(Type.GetType(@"System.AddIn.Hosting.AddInServer") , @"ipc://" + guid + @"/AddInServer"); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.Generic; using System.Text; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Ipc; namespace System.AddIn.Hosting { internal static class RemotingHelper { // runtime initializes this to false; static bool CreatedInAD; static readonly Object s_lock = new Object(); internal static readonly String s_emptyGuid = Guid.Empty.ToString(); //// // [System.Security.SecuritySafeCritical] [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Assert, Flags = System.Security.Permissions.SecurityPermissionFlag.RemotingConfiguration | System.Security.Permissions.SecurityPermissionFlag.Infrastructure)] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security","CA2116:AptcaMethodsShouldOnlyCallAptcaMethods")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2129:SecurityTransparentCodeShouldNotReferenceNonpublicSecurityCriticalCode", Justification = "This is a SecurityRules.Level1 assembly, in which this rule is being incorrectly applied")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2128:SecurityTransparentCodeShouldNotAssert", Justification = "This is a SecurityRules.Level1 assembly, in which this rule is being incorrectly applied")] internal static void InitializeClientChannel() { lock(s_lock) { if (CreatedInAD) // only one client channel per AD return; CreatedInAD = true; // make sure this hasn't been created already in this AD // BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider(); serverProvider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full; BinaryClientFormatterSinkProvider clientProvider = new BinaryClientFormatterSinkProvider(); System.Collections.IDictionary props = new System.Collections.Hashtable(); props["name"] = "ClientChannel"; props["portName"] = Guid.NewGuid().ToString(); props["typeFilterLevel"] = "Full"; // When communicating between application domains on the same computer, the ipc channel is much faster than the tcp IChannel ichannel = new AddInIpcChannel(props, clientProvider, serverProvider); // ( ChannelServices.RegisterChannel(ichannel, false); } } // AddinServer is a singleton per process. It is created at process creation. // The AddinServer is the Marshaled class used to hook up the Client and Server remoting channel. //// // // // // // [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Justification = "Reviewed")] [System.Security.SecuritySafeCritical] internal static AddInServer GetAddInServer(string guid) { System.Diagnostics.Contracts.Contract.Requires(guid != null && guid != s_emptyGuid); return (AddInServer)Activator.GetObject(Type.GetType(@"System.AddIn.Hosting.AddInServer") , @"ipc://" + guid + @"/AddInServer"); } } } // 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
- JournalEntryStack.cs
- Padding.cs
- X509ClientCertificateCredentialsElement.cs
- KeyNotFoundException.cs
- WebPartCloseVerb.cs
- XmlExtensionFunction.cs
- TwoPhaseCommit.cs
- ToolStripDropDownMenu.cs
- AutomationAttributeInfo.cs
- SynchronizingStream.cs
- XmlSchemaImport.cs
- HandlerBase.cs
- OraclePermission.cs
- TextPatternIdentifiers.cs
- Math.cs
- Random.cs
- HttpListenerContext.cs
- TraceContextRecord.cs
- PolicyStatement.cs
- ObfuscateAssemblyAttribute.cs
- ComboBoxItem.cs
- SoapFault.cs
- XmlSerializerFactory.cs
- ISessionStateStore.cs
- CompositionTarget.cs
- InvalidFilterCriteriaException.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- MessageFault.cs
- CodeDelegateInvokeExpression.cs
- ImageListDesigner.cs
- _DisconnectOverlappedAsyncResult.cs
- XmlObjectSerializerReadContextComplexJson.cs
- SafeLibraryHandle.cs
- PnrpPeerResolver.cs
- SqlDataSourceTableQuery.cs
- ValidationHelpers.cs
- ProfileEventArgs.cs
- input.cs
- PageBuildProvider.cs
- InvalidCommandTreeException.cs
- ProcessModuleCollection.cs
- DPAPIProtectedConfigurationProvider.cs
- CounterSet.cs
- DeviceContext2.cs
- Tag.cs
- OdbcStatementHandle.cs
- EntityType.cs
- ParagraphVisual.cs
- XmlDocumentSchema.cs
- JoinElimination.cs
- GenericEnumConverter.cs
- RestHandler.cs
- SrgsSubset.cs
- Int64Storage.cs
- ClientTargetSection.cs
- cookiecontainer.cs
- PageBreakRecord.cs
- WsatTransactionInfo.cs
- CodeNamespaceImport.cs
- Size.cs
- CodeNamespace.cs
- WSHttpTransportSecurityElement.cs
- BitmapEditor.cs
- RightsManagementInformation.cs
- AmbientLight.cs
- XmlSchemaAll.cs
- MouseBinding.cs
- PageSettings.cs
- ConfigsHelper.cs
- GuidConverter.cs
- HorizontalAlignConverter.cs
- sqlcontext.cs
- DrawItemEvent.cs
- TypeValidationEventArgs.cs
- PropertyDescriptorGridEntry.cs
- smtpconnection.cs
- Preprocessor.cs
- PeerTransportSecurityElement.cs
- ActiveXHelper.cs
- CodeDefaultValueExpression.cs
- SystemFonts.cs
- FileRecordSequenceCompletedAsyncResult.cs
- WsatServiceAddress.cs
- TextViewBase.cs
- CreateUserErrorEventArgs.cs
- AttributeCollection.cs
- ItemList.cs
- XmlResolver.cs
- FilteredDataSetHelper.cs
- DetailsViewRow.cs
- precedingquery.cs
- TreeViewBindingsEditorForm.cs
- PagedDataSource.cs
- SelectedDatesCollection.cs
- TextWriter.cs
- PreviewPrintController.cs
- ExtendedProtectionPolicy.cs
- TextProperties.cs
- MdiWindowListItemConverter.cs
- CreateUserWizardStep.cs