~ruther/csharp-dll-injector

322bb9b0c6137a531527a5833c296838882b74f1 — František Boháček 4 years ago c2de55b
Add Calculation result return examples
M examples/csharp-dllexport/DllExportInjector/Program.cs => examples/csharp-dllexport/DllExportInjector/Program.cs +24 -0
@@ 39,6 39,20 @@ namespace DllExportInjector
            public int Second;
        }

        [StructLayout(LayoutKind.Sequential, Pack = 1)]
        public struct CalculationResult
        {
            [MarshalAs(UnmanagedType.I4)]
            public int Addition;
            [MarshalAs(UnmanagedType.I4)]
            public int Subtraction;
            [MarshalAs(UnmanagedType.I4)]
            public int Multiply;
            [MarshalAs(UnmanagedType.I4)]
            public int Divide;
        }


        static void Main(string[] args)
        {
            Console.WriteLine("Welcome to CsharpInjector demo for DllExport library");


@@ 100,6 114,16 @@ namespace DllExportInjector
                Number = 1000
            });

            // Get result struct
            result = injectedModule.ExecuteFunction("Calc", new AddParams
            {
                First = 15,
                Second = 5
            });
            CalculationResult calculationResult = result.To<CalculationResult>();

            bool freed = result.To<bool>();

            injectedModule.Process.Close();
            Console.ReadLine();
        }

M examples/csharp-dllexport/DllExportLibrary/Export.cs => examples/csharp-dllexport/DllExportLibrary/Export.cs +25 -1
@@ 17,7 17,19 @@ namespace DllExportLibrary
            public byte* Param;
            public int Number;
        }
        

        [StructLayout(LayoutKind.Sequential, Pack = 1)]
        public class CalculationResult
        {
            public int Addition;
            [MarshalAs(UnmanagedType.I4)]
            public int Subtraction;
            [MarshalAs(UnmanagedType.I4)]
            public int Multiply;
            [MarshalAs(UnmanagedType.I4)]
            public int Divide;
        }


        [StructLayout(LayoutKind.Sequential, Pack = 1)]
        public class AddParams


@@ 65,6 77,18 @@ namespace DllExportLibrary
        }

        [DllExport]
        public static CalculationResult Calc(AddParams pars)
        {
            return new CalculationResult
            {
                Addition = pars.First + pars.Second,
                Divide = pars.First / pars.Second,
                Multiply = pars.First * pars.Second,
                Subtraction = pars.First - pars.Second,
            };
        }

        [DllExport]
        public static int Add(AddParams pars)
        {
            Console.WriteLine($"Performing addition of numbers {pars.First} and {pars.Second}");

Do not follow this link