C# AnyCPU 和读/写进程内存

标签 c# anycpu

我的 C# 程序是使用 AnyCPU 选项编译的,我正在使用 P/Invoke 以这种方式调用 native API:

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

我的问题是,自从使用 anycpu 编译后,我的 C# 程序能否同时读取和写入 32 位和 64 位进程?或者会有问题吗?我问这个是因为我只有 32 位操作系统,所以我无法测试它。谢谢

最佳答案

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

关于C# AnyCPU 和读/写进程内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6564071/

相关文章:

c# visual studio build exe with target anycpu 但在调用进程平台(x86/x64)上确定其平台(x86/x64)

c# - 这个 Dictionary<TKey, TValue> 异常怎么可能?

c# - 检查字符串的第一个元素是否为正整数

c# - 如何对@Html.DropDownListFor 进行排序?

c# - .net 的应用程序更新框架?

c# - C++/C# 解决方案中不可用的任何 CPU

c# - AnyCpu 引用 x64 有效吗?

windows-phone-7 - x86 和 x64 选项对 Windows Phone 7 应用程序有什么意义吗?

module - 在一个 WiX 安装程序中包含 32 位和 64 位合并模块

c# - "dd/mm/yyyy"格式的 CompareValidator