public ActivatorHost(string guid, int processId, ProcessDomainSetup setup)
{
SetupDllDirectories(setup);
var serverProvider = new BinaryServerFormatterSinkProvider { TypeFilterLevel = setup.TypeFilterLevel };
var clientProvider = new BinaryClientFormatterSinkProvider();
_process = Process.GetProcessById(processId);
var properties = new Hashtable();
properties["portName"] = string.Format(ServerChannelName, guid);
properties["name"] = string.Format(ServerChannelName, guid);
properties["rejectRemoteRequests"] = true;
setup.Remoting.ApplyServerProperties(properties);
_channel = new IpcChannel(properties, clientProvider, serverProvider);
ChannelServices.RegisterChannel(_channel, false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(Activator), ActivatorName, WellKnownObjectMode.Singleton);
EventWaitHandle serverStartedHandle = null;
try
{
bool created;
serverStartedHandle = new EventWaitHandle(false, EventResetMode.ManualReset, string.Format(EventName, guid), out created);
if (created)
{
throw new Exception("Event handle did not exist for remote process");
}
serverStartedHandle.Set();
}
finally
{
if (serverStartedHandle != null)
{
serverStartedHandle.Close();
}
}
}