C# 指针超出 IntPtr 限制

本文关键字:IntPtr 限制 指针 | 更新日期: 2023-09-27 18:31:09

我正在尝试读取进程的内存,但我想从中开始读取的地址超过了 IntPtr 和 UIntPtr 的限制。

[DllImport("kernel32.dll", EntryPoint = "ReadProcessMemory")]
    private static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [Out] byte[] lpBuffer, int dwSize, [Out] int lpNumberOfBytesRead);
ReadProcessMemory(ProcessHandle, (IntPtr)0x14EC7B38A, buffer, buffer.Length, bytesused);

这样做会产生溢出异常,即使我使用 UIntPtr .我尝试使用ulong,但这会产生访问违规异常异常。我应该使用什么其他数据类型?

C# 指针超出 IntPtr 限制

Windows是一个64位操作系统,UInt是64位宽。我认为问题是您的应用程序要么是为 32 位构建的,要么是构建为"首选 32 位"(Visual Studio 默认值)。

此答案包含您要更改的设置的详细信息。