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
- WebBaseEventKeyComparer.cs
- IndexerNameAttribute.cs
- AutomationPropertyInfo.cs
- AnnotationStore.cs
- Activity.cs
- Context.cs
- RegexCapture.cs
- SafeNativeMethods.cs
- FormsIdentity.cs
- FamilyTypeface.cs
- externdll.cs
- FloaterParagraph.cs
- SelectionGlyphBase.cs
- DBSchemaTable.cs
- OdbcError.cs
- SingleAnimationBase.cs
- HMAC.cs
- QuestionEventArgs.cs
- SerializationEventsCache.cs
- DataTemplateSelector.cs
- WebPartUserCapability.cs
- DataSpaceManager.cs
- mediaclock.cs
- login.cs
- SendOperation.cs
- DataRelationPropertyDescriptor.cs
- BoolExpr.cs
- ForwardPositionQuery.cs
- XPathDescendantIterator.cs
- SqlConnectionPoolGroupProviderInfo.cs
- Config.cs
- CallbackDebugElement.cs
- MeasureData.cs
- MessageBuilder.cs
- ConnectionPoint.cs
- PackageDigitalSignatureManager.cs
- GridViewSortEventArgs.cs
- OpenFileDialog.cs
- BooleanToVisibilityConverter.cs
- UserControl.cs
- BaseCodeDomTreeGenerator.cs
- BuildResultCache.cs
- ContextQuery.cs
- CellQuery.cs
- RuleEngine.cs
- StylusTouchDevice.cs
- SafeRightsManagementQueryHandle.cs
- ProxyAttribute.cs
- FileDialogCustomPlace.cs
- ButtonBase.cs
- ToolStripItem.cs
- ErrorRuntimeConfig.cs
- EUCJPEncoding.cs
- ToolStripPanelCell.cs
- TextPenaltyModule.cs
- TabControlEvent.cs
- VisualStyleInformation.cs
- _ListenerRequestStream.cs
- TextRenderer.cs
- BaseTreeIterator.cs
- MimeMultiPart.cs
- ClientConfigurationHost.cs
- XmlSerializationGeneratedCode.cs
- RegistryPermission.cs
- RotateTransform3D.cs
- PageThemeCodeDomTreeGenerator.cs
- XPathNavigatorReader.cs
- OrderedDictionary.cs
- DynamicResourceExtensionConverter.cs
- HttpRuntimeSection.cs
- BitmapScalingModeValidation.cs
- Point.cs
- TextEncodedRawTextWriter.cs
- AxisAngleRotation3D.cs
- CultureTable.cs
- QilList.cs
- InnerItemCollectionView.cs
- ServiceHostingEnvironment.cs
- DbConvert.cs
- HttpCookieCollection.cs
- AssociatedControlConverter.cs
- HandlerFactoryCache.cs
- RegexCapture.cs
- CodeThrowExceptionStatement.cs
- SqlClientPermission.cs
- OdbcException.cs
- CodeRemoveEventStatement.cs
- WebPartTransformerAttribute.cs
- HttpClientCertificate.cs
- ImageEditor.cs
- Faults.cs
- COAUTHIDENTITY.cs
- SrgsOneOf.cs
- SQLUtility.cs
- FormatSettings.cs
- UpDownEvent.cs
- Int16.cs
- FrameworkContentElementAutomationPeer.cs
- NonceCache.cs
- XmlUrlEditor.cs