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
- MenuItemBinding.cs
- StreamAsIStream.cs
- ExceptionWrapper.cs
- Permission.cs
- PauseStoryboard.cs
- RectangleHotSpot.cs
- ObjectStorage.cs
- TextServicesManager.cs
- Int64KeyFrameCollection.cs
- ScrollBarAutomationPeer.cs
- RotateTransform.cs
- ScriptModule.cs
- QuadraticBezierSegment.cs
- BuildProviderCollection.cs
- HitTestParameters.cs
- Parameter.cs
- UnitySerializationHolder.cs
- _Win32.cs
- RegistryPermission.cs
- FaultHandlingFilter.cs
- RectAnimationClockResource.cs
- BamlStream.cs
- RepeatInfo.cs
- ThreadStateException.cs
- MimeObjectFactory.cs
- BitmapPalettes.cs
- IOThreadTimer.cs
- OleDbCommandBuilder.cs
- MembershipUser.cs
- ListViewGroupCollectionEditor.cs
- PowerModeChangedEventArgs.cs
- InkSerializer.cs
- ItemCollection.cs
- InternalConfigRoot.cs
- DynamicRendererThreadManager.cs
- QueryContinueDragEventArgs.cs
- XmlSchemaAll.cs
- Soap.cs
- MemberRestriction.cs
- __Filters.cs
- ILGenerator.cs
- CodeObject.cs
- GeometryDrawing.cs
- OdbcRowUpdatingEvent.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- BevelBitmapEffect.cs
- DrawToolTipEventArgs.cs
- ScrollBarAutomationPeer.cs
- PropagatorResult.cs
- ErrorHandler.cs
- TemplatedAdorner.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- StrongName.cs
- GridViewAutomationPeer.cs
- ApplicationSettingsBase.cs
- XmlSerializerSection.cs
- WebPartConnectionsConfigureVerb.cs
- ObjectContext.cs
- BinaryObjectWriter.cs
- Unit.cs
- BooleanExpr.cs
- UserPersonalizationStateInfo.cs
- MouseCaptureWithinProperty.cs
- InProcStateClientManager.cs
- AccessorTable.cs
- AssociationTypeEmitter.cs
- DnsPermission.cs
- ResizeGrip.cs
- FontUnitConverter.cs
- TransactionState.cs
- HttpApplicationFactory.cs
- WindowsScroll.cs
- DataKeyPropertyAttribute.cs
- GradientStop.cs
- UriSectionData.cs
- ElementFactory.cs
- PriorityQueue.cs
- HijriCalendar.cs
- BorderSidesEditor.cs
- BuildTopDownAttribute.cs
- Buffer.cs
- IsolationInterop.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- RecordConverter.cs
- BaseCollection.cs
- Control.cs
- StateDesigner.TransitionInfo.cs
- PingOptions.cs
- ValueOfAction.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- SafeLocalMemHandle.cs
- InputScopeNameConverter.cs
- CodeGenerator.cs
- MemberRelationshipService.cs
- BidOverLoads.cs
- CallContext.cs
- DesignObjectWrapper.cs
- pingexception.cs
- MobileListItem.cs
- UserPersonalizationStateInfo.cs