Esempio n. 1
0
        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");
            }
        }
Esempio n. 2
0
 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);
 }