From 59776f88bd5ca9bbac97fd7a876c3e8eb086f8dd Mon Sep 17 00:00:00 2001 From: Sewer56 Date: Thu, 1 Aug 2024 01:05:27 +0100 Subject: [PATCH] Added: API Compatibility Shim for legacy `process_vm_readv_k32` function. --- src/Reloaded.Memory/ExternalMemory.cs | 2 +- src/Reloaded.Memory/Native/Unix/Posix.cs | 17 ++++++++++++++++- .../PublicAPI/net48/PublicAPI.Shipped.txt | 1 + .../PublicAPI/net5.0/PublicAPI.Shipped.txt | 1 + .../PublicAPI/net7.0/PublicAPI.Shipped.txt | 1 + .../PublicAPI/net8.0/PublicAPI.Shipped.txt | 1 + .../netcoreapp3.1/PublicAPI.Shipped.txt | 1 + .../netstandard2.0/PublicAPI.Shipped.txt | 1 + .../netstandard2.1/PublicAPI.Shipped.txt | 1 + 9 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/Reloaded.Memory/ExternalMemory.cs b/src/Reloaded.Memory/ExternalMemory.cs index f768c9c..c7105e8 100644 --- a/src/Reloaded.Memory/ExternalMemory.cs +++ b/src/Reloaded.Memory/ExternalMemory.cs @@ -201,7 +201,7 @@ private bool ReadProcessMemory(nuint location, void* buffer, nuint numBytes) return Kernel32.ReadProcessMemory(_processHandle, location, (nuint)buffer, numBytes, out _); if (Polyfills.IsLinux()) - return Posix.process_vm_readv_k32(_processHandle, location, (nuint)buffer, numBytes); + return Posix.process_vm_readv_k32_2(_processHandle, location, (nuint)buffer, numBytes); ThrowHelpers.ThrowPlatformNotSupportedException(); return false; diff --git a/src/Reloaded.Memory/Native/Unix/Posix.cs b/src/Reloaded.Memory/Native/Unix/Posix.cs index ef6faf0..6408b3e 100644 --- a/src/Reloaded.Memory/Native/Unix/Posix.cs +++ b/src/Reloaded.Memory/Native/Unix/Posix.cs @@ -128,6 +128,21 @@ public struct IoVec public nuint iov_len; } + /// + /// Helper around + /// + /// but with an API similar to . + /// + /// Id of the process to read from. + /// Local memory address. + /// Remote memory address. + /// Memory size. + /// True on success, else false. + [Obsolete("Use process_vm_readv_k32_2 instead. This function has incorrect parameter order.")] + [PublicAPI] + public static bool process_vm_readv_k32(nint processId, nuint localIov, nuint remoteIov, nuint numBytes) => process_vm_readv_k32_2(processId, remoteIov, localIov, numBytes); + /// /// Helper around /// Local memory address. /// Memory size. /// True on success, else false. - public static unsafe bool process_vm_readv_k32(nint processId, nuint remoteIov, nuint localIov, nuint numBytes) + public static unsafe bool process_vm_readv_k32_2(nint processId, nuint remoteIov, nuint localIov, nuint numBytes) { IoVec local = new() { iov_base = localIov, iov_len = numBytes }; IoVec remote = new() { iov_base = remoteIov, iov_len = numBytes }; diff --git a/src/Reloaded.Memory/PublicAPI/net48/PublicAPI.Shipped.txt b/src/Reloaded.Memory/PublicAPI/net48/PublicAPI.Shipped.txt index 3638c64..2e47250 100644 --- a/src/Reloaded.Memory/PublicAPI/net48/PublicAPI.Shipped.txt +++ b/src/Reloaded.Memory/PublicAPI/net48/PublicAPI.Shipped.txt @@ -988,3 +988,4 @@ Reloaded.Memory.Utilities.CircularBufferStruct.ItemFit.Yes = 0 -> Reloaded.Memor Reloaded.Memory.Utilities.CircularBufferStruct.Remaining.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Size.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Start.get -> nuint +static Reloaded.Memory.Native.Unix.Posix.process_vm_readv_k32_2(nint processId, nuint remoteIov, nuint localIov, nuint numBytes) -> bool diff --git a/src/Reloaded.Memory/PublicAPI/net5.0/PublicAPI.Shipped.txt b/src/Reloaded.Memory/PublicAPI/net5.0/PublicAPI.Shipped.txt index 3638c64..2e47250 100644 --- a/src/Reloaded.Memory/PublicAPI/net5.0/PublicAPI.Shipped.txt +++ b/src/Reloaded.Memory/PublicAPI/net5.0/PublicAPI.Shipped.txt @@ -988,3 +988,4 @@ Reloaded.Memory.Utilities.CircularBufferStruct.ItemFit.Yes = 0 -> Reloaded.Memor Reloaded.Memory.Utilities.CircularBufferStruct.Remaining.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Size.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Start.get -> nuint +static Reloaded.Memory.Native.Unix.Posix.process_vm_readv_k32_2(nint processId, nuint remoteIov, nuint localIov, nuint numBytes) -> bool diff --git a/src/Reloaded.Memory/PublicAPI/net7.0/PublicAPI.Shipped.txt b/src/Reloaded.Memory/PublicAPI/net7.0/PublicAPI.Shipped.txt index 0e7bfec..80639bb 100644 --- a/src/Reloaded.Memory/PublicAPI/net7.0/PublicAPI.Shipped.txt +++ b/src/Reloaded.Memory/PublicAPI/net7.0/PublicAPI.Shipped.txt @@ -992,3 +992,4 @@ Reloaded.Memory.Utilities.CircularBufferStruct.ItemFit.Yes = 0 -> Reloaded.Memor Reloaded.Memory.Utilities.CircularBufferStruct.Remaining.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Size.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Start.get -> nuint +static Reloaded.Memory.Native.Unix.Posix.process_vm_readv_k32_2(nint processId, nuint remoteIov, nuint localIov, nuint numBytes) -> bool diff --git a/src/Reloaded.Memory/PublicAPI/net8.0/PublicAPI.Shipped.txt b/src/Reloaded.Memory/PublicAPI/net8.0/PublicAPI.Shipped.txt index 0e7bfec..80639bb 100644 --- a/src/Reloaded.Memory/PublicAPI/net8.0/PublicAPI.Shipped.txt +++ b/src/Reloaded.Memory/PublicAPI/net8.0/PublicAPI.Shipped.txt @@ -992,3 +992,4 @@ Reloaded.Memory.Utilities.CircularBufferStruct.ItemFit.Yes = 0 -> Reloaded.Memor Reloaded.Memory.Utilities.CircularBufferStruct.Remaining.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Size.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Start.get -> nuint +static Reloaded.Memory.Native.Unix.Posix.process_vm_readv_k32_2(nint processId, nuint remoteIov, nuint localIov, nuint numBytes) -> bool diff --git a/src/Reloaded.Memory/PublicAPI/netcoreapp3.1/PublicAPI.Shipped.txt b/src/Reloaded.Memory/PublicAPI/netcoreapp3.1/PublicAPI.Shipped.txt index 3638c64..2e47250 100644 --- a/src/Reloaded.Memory/PublicAPI/netcoreapp3.1/PublicAPI.Shipped.txt +++ b/src/Reloaded.Memory/PublicAPI/netcoreapp3.1/PublicAPI.Shipped.txt @@ -988,3 +988,4 @@ Reloaded.Memory.Utilities.CircularBufferStruct.ItemFit.Yes = 0 -> Reloaded.Memor Reloaded.Memory.Utilities.CircularBufferStruct.Remaining.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Size.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Start.get -> nuint +static Reloaded.Memory.Native.Unix.Posix.process_vm_readv_k32_2(nint processId, nuint remoteIov, nuint localIov, nuint numBytes) -> bool diff --git a/src/Reloaded.Memory/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt b/src/Reloaded.Memory/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt index 3638c64..2e47250 100644 --- a/src/Reloaded.Memory/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt +++ b/src/Reloaded.Memory/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt @@ -988,3 +988,4 @@ Reloaded.Memory.Utilities.CircularBufferStruct.ItemFit.Yes = 0 -> Reloaded.Memor Reloaded.Memory.Utilities.CircularBufferStruct.Remaining.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Size.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Start.get -> nuint +static Reloaded.Memory.Native.Unix.Posix.process_vm_readv_k32_2(nint processId, nuint remoteIov, nuint localIov, nuint numBytes) -> bool diff --git a/src/Reloaded.Memory/PublicAPI/netstandard2.1/PublicAPI.Shipped.txt b/src/Reloaded.Memory/PublicAPI/netstandard2.1/PublicAPI.Shipped.txt index 3638c64..2e47250 100644 --- a/src/Reloaded.Memory/PublicAPI/netstandard2.1/PublicAPI.Shipped.txt +++ b/src/Reloaded.Memory/PublicAPI/netstandard2.1/PublicAPI.Shipped.txt @@ -988,3 +988,4 @@ Reloaded.Memory.Utilities.CircularBufferStruct.ItemFit.Yes = 0 -> Reloaded.Memor Reloaded.Memory.Utilities.CircularBufferStruct.Remaining.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Size.get -> nuint Reloaded.Memory.Utilities.CircularBufferStruct.Start.get -> nuint +static Reloaded.Memory.Native.Unix.Posix.process_vm_readv_k32_2(nint processId, nuint remoteIov, nuint localIov, nuint numBytes) -> bool