private static void HandleRequest(string request, IPC.IConnection connection) { if (!connection.IsConnected) { throw new InvalidOperationException("Pipe connection was broken while handling request"); } var message = NamedPipeMessages.Message.FromString(request); switch (message.Header) { case NamedPipeMessages.InjectionCompleteNotification.InjectionComplete: var msg = new NamedPipeMessages.InjectionCompleteNotification(message.Body); var reqData = msg.RequestData; if (reqData.Completed) { InjectionCompleted(reqData.PID); } else { throw new InjectionLoadException($"Injection into process {reqData.PID} failed."); } break; default: throw new InvalidOperationException($"Message type {message.Header} is not supported"); } }
private static bool SendInjectionComplete(string pipeName, int pid) { using (var pipeClient = new NamedPipeClient(pipeName)) { if (pipeClient.Connect()) { var request = new NamedPipeMessages.InjectionCompleteNotification(pid, true); if (pipeClient.TrySendRequest(request.CreateMessage())) { return(true); } } } return(false); }