C#指针超过IntPtr限制

时间:2016-01-20 20:46:30

标签: c#

我试图读取进程的内存,但我想要读取的地址超出了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,执行此操作也会产生OverflowException异常。我尝试使用ulong,但这会产生AccessViolationException异常。我应该使用哪种其他数据类型?

1 个答案:

答案 0 :(得分:1)

Windows是64位操作系统。 UInt是64位宽。我认为问题在于你的应用程序是为32位构建的,或是为了#34;首选32位" (Visual Studio默认值)。

This answer包含您要更改的设置的详细信息。