2011-07-03 20 views
3

我的C#编译程序时AnyCPU选项,我使用的P/Invoke调用本地的API是这样的:C#AnyCPU和Read/WriteProcessMemory的

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

我guestion是,可以读取和写入我的C#程序到32位和64位进程,因为它与anycpu编译?或会有问题?我问这是因为我只有32位的操作系统,所以我无法测试它。 Thx

回答

2

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

相关问题