C#任何CPU选项和VirtualQueryEx

时间:2018-12-15 01:28:50

标签: c# .net

我找到了我无法解释的提示,希望有人向我解释为什么会发生。

要恢复我的状况,我正在尝试使用VirtualQueryEx将内存区域读取到64位程序(notepad.exe)

我已经弄清楚的是:

  • 从32位进程中,我只能使用MEMORY_BASIC_INFORMATION32结构msdn doc来读取32位进程
  • 从64位进程中,我可以使用MEMORY_BASIC_INFORMATION64结构msdn doc来读取64位和32位进程
  • 通过“任何CPU” 配置,我得到的报酬与以x86 32位程序运行我的程序时完全一样。

那么我的问题是:为什么? 我的意思是,我查看了msdn文档,他们说它应该以64bits模式正常运行,因为我的计算机是64bits操作系统。那为什么它表现得像一个32位的进程呢?

非常感谢您的未来答复。我真的很好奇。

1 个答案:

答案 0 :(得分:1)

感谢@ hans-passant提供的帮助:

  

解决方案平台名称与C#项目无关,仅对C ++项目有效。使用不同构建工具的项目类型很重要。唯一重要的设置是EXE项目上的设置,这些设置会强制使用特定的抖动。项目>属性>构建选项卡>首选32位和平台目标。他们试图在VS2010中改变这一点,使C#项目的解决方案平台名称为“ x86”。大失败的鲸鱼,回到VS2012中的AnyCPU

然后,对我有用的解决方案是,取消选中“首选32位”以查看是否选择64位程序作为Debug和Release模式的解决方案。

再次感谢您。