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
- EntityDesignPluralizationHandler.cs
- FontStretches.cs
- Descriptor.cs
- StylusPlugin.cs
- HtmlImage.cs
- ActivatableWorkflowsQueryResult.cs
- SqlDataSourceQueryEditor.cs
- DataGridTextColumn.cs
- CodeGenerator.cs
- ObjectListFieldCollection.cs
- RegularExpressionValidator.cs
- RegionIterator.cs
- DataViewSetting.cs
- PrePostDescendentsWalker.cs
- XappLauncher.cs
- URLEditor.cs
- SecurityTokenValidationException.cs
- HtmlInputRadioButton.cs
- _SpnDictionary.cs
- UncommonField.cs
- ContentOperations.cs
- StringInfo.cs
- InternalResources.cs
- PresentationUIStyleResources.cs
- login.cs
- TreeView.cs
- List.cs
- SchemaEntity.cs
- EmptyCollection.cs
- FileDialog_Vista_Interop.cs
- WasEndpointConfigContainer.cs
- WindowsGraphics2.cs
- Encoding.cs
- EventBindingService.cs
- ObjectStateFormatter.cs
- WindowsScroll.cs
- CodeDomExtensionMethods.cs
- TextProperties.cs
- DynamicValueConverter.cs
- AssemblyNameProxy.cs
- DefaultValueTypeConverter.cs
- ECDiffieHellmanCng.cs
- Facet.cs
- DbProviderSpecificTypePropertyAttribute.cs
- DataPagerFieldCommandEventArgs.cs
- MatrixValueSerializer.cs
- FunctionDetailsReader.cs
- LoginCancelEventArgs.cs
- SignatureToken.cs
- DataGridComponentEditor.cs
- DocobjHost.cs
- DeleteMemberBinder.cs
- XmlSchemaObject.cs
- LabelEditEvent.cs
- CachedPathData.cs
- DesignerActionList.cs
- EntityDataSourceContainerNameConverter.cs
- AutomationElementCollection.cs
- BuildProviderInstallComponent.cs
- SharedUtils.cs
- ProxyDataContractResolver.cs
- AnnotationComponentManager.cs
- BamlStream.cs
- ContextMenuAutomationPeer.cs
- GetIndexBinder.cs
- WebResponse.cs
- Grant.cs
- QueryContinueDragEvent.cs
- PeerNameResolver.cs
- BufferedGraphicsManager.cs
- TemplateComponentConnector.cs
- FrameworkContextData.cs
- QueryCreatedEventArgs.cs
- Camera.cs
- Symbol.cs
- LockingPersistenceProvider.cs
- FontNameEditor.cs
- WorkerRequest.cs
- DirectionalLight.cs
- NativeMethods.cs
- MouseGestureValueSerializer.cs
- Win32KeyboardDevice.cs
- DefaultAsyncDataDispatcher.cs
- UserCancellationException.cs
- FragmentQueryKB.cs
- SqlDataRecord.cs
- SpeechDetectedEventArgs.cs
- CellCreator.cs
- RawStylusInputCustomDataList.cs
- HttpRequest.cs
- HttpConfigurationSystem.cs
- HwndAppCommandInputProvider.cs
- InputReferenceExpression.cs
- WebPermission.cs
- AsyncPostBackTrigger.cs
- DynamicDocumentPaginator.cs
- NavigationCommands.cs
- WriteableBitmap.cs
- SBCSCodePageEncoding.cs
- Query.cs