C#AnyCPU和Read / WriteProcessMemory

时间:2011-07-03 16:27:45

标签: c# anycpu

我的C#程序是使用AnyCPU选项编译的,我使用P / Invoke以这种方式调用本机apis:

[DllImport("kernel32.dll", SetLastError = true)]
        static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, out UIntPtr lpNumberOfBytesWritten);

我的猜测是,我的c#程序可以读取和写入32位和64位进程,因为它是用anycpu编译的吗?还是会有问题?我问这个是因为我只有32位操作系统所以我无法测试它。 THX

1 个答案:

答案 0 :(得分:2)

在32位操作系统上,所有进程都是32位,因此不会出现问题。在64位操作系统上,AnyCPU进程运行64位,唯一可能的不匹配则是32位进程。但是在64位指针中存储32位地址没有问题。如果您尝试从32位进程读取/写入64位进程中的内存,则会遇到困难。但是既然你正在做相反的事情就没有问题了。