diff --git a/Dalamud.Injector/Dalamud.Injector.csproj b/Dalamud.Injector/Dalamud.Injector.csproj index 01d82ed18..8e2137758 100644 --- a/Dalamud.Injector/Dalamud.Injector.csproj +++ b/Dalamud.Injector/Dalamud.Injector.csproj @@ -2,7 +2,8 @@ Exe netcoreapp3.1 - 8.0 + preview + enable diff --git a/Dalamud.Injector/DalamudLauncher.cs b/Dalamud.Injector/DalamudLauncher.cs index b9e18d454..1c78d9887 100644 --- a/Dalamud.Injector/DalamudLauncher.cs +++ b/Dalamud.Injector/DalamudLauncher.cs @@ -1,6 +1,11 @@ -using System; +using System; using System.Collections.Generic; +using System.IO.Pipes; using System.Text; +using CoreHook.BinaryInjection; +using CoreHook.BinaryInjection.RemoteInjection; +using CoreHook.BinaryInjection.RemoteInjection.Configuration; +using CoreHook.IPC.Platform; namespace Dalamud.Injector { @@ -18,9 +23,34 @@ namespace Dalamud.Injector // } + public void Relaunch(uint pid) + { + // + } + public void Inject(uint pid) { + var corehookConfig = new RemoteInjectorConfiguration + { + ClrBootstrapLibrary = "", + ClrRootPath = "", + DetourLibrary = "", + HostLibrary = "", + InjectionPipeName = "", + PayloadLibrary = "", + VerboseLog = false, + }; + + RemoteInjector.Inject(pid, corehookConfig, ); + } + } + + internal sealed class PipePlatform : IPipePlatform + { + public NamedPipeServerStream CreatePipeByName(string pipeName, string serverName = ".") + { + return new NamedPipeServerStream(pipeName, PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous, 0x10000, 0x10000); } } } diff --git a/Dalamud.Injector/DalamudLauncherOptions.cs b/Dalamud.Injector/DalamudLauncherOptions.cs index 834945b7f..e8b0b26a5 100644 --- a/Dalamud.Injector/DalamudLauncherOptions.cs +++ b/Dalamud.Injector/DalamudLauncherOptions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; namespace Dalamud.Injector @@ -14,11 +14,11 @@ namespace Dalamud.Injector /// /// /// - public string RootDirectory { get; set; } + public string RootDirectory { get; set; } = ""; /// /// /// - public string BinaryDirectory { get; set; } + public string BinaryDirectory { get; set; } = ""; } } diff --git a/Dalamud.Injector/Exceptions.cs b/Dalamud.Injector/Exceptions.cs new file mode 100644 index 000000000..23e8dc356 --- /dev/null +++ b/Dalamud.Injector/Exceptions.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Dalamud.Injector +{ + public class DalamudException : Exception + { + public DalamudException() : base() { } + + public DalamudException(string message) : base(message) { } + + public DalamudException(string message, Exception inner) : base(message, inner) { } + } + + public partial class DalamudProcessException : DalamudException + { + public uint ProcessId { get; } + } + + public partial class DalamudProcessException + { + public DalamudProcessException(uint pid, string message) : base(message) + { + ProcessId = pid; + } + } +} diff --git a/Dalamud.Injector/FFI/Win32.cs b/Dalamud.Injector/FFI/Win32.cs index 8e5c7a3de..64f2f6658 100644 --- a/Dalamud.Injector/FFI/Win32.cs +++ b/Dalamud.Injector/FFI/Win32.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Text; @@ -6,5 +6,6 @@ namespace Dalamud.Injector.FFI { internal static class Win32 { + } } diff --git a/Dalamud.Injector/Options.cs b/Dalamud.Injector/Program/Options.cs similarity index 76% rename from Dalamud.Injector/Options.cs rename to Dalamud.Injector/Program/Options.cs index 005fd132a..a5a1b99f2 100644 --- a/Dalamud.Injector/Options.cs +++ b/Dalamud.Injector/Program/Options.cs @@ -10,9 +10,9 @@ namespace Dalamud.Injector public uint Pid { get; set; } [Option("root", Required = true, HelpText = "")] - public string RootDirectory { get; set; } + public string RootDirectory { get; set; } = null!; [Option("bin", Required = true, HelpText = "")] - public string BinaryDirectory { get; set; } + public string BinaryDirectory { get; set; } = null!; } } diff --git a/Dalamud.Injector/Program.cs b/Dalamud.Injector/Program/Program.cs similarity index 94% rename from Dalamud.Injector/Program.cs rename to Dalamud.Injector/Program/Program.cs index 9b1ecfe3c..d6552585c 100644 --- a/Dalamud.Injector/Program.cs +++ b/Dalamud.Injector/Program/Program.cs @@ -10,7 +10,7 @@ namespace Dalamud.Injector Parser.Default.ParseArguments(args) .WithParsed(opt => { - + }); } }