C#任意CPU选项和VirtualQueryEx



我发现了一个我无法解释的组件,我希望有人能向我解释为什么会发生这种情况。

为了恢复我的情况,我试图用VirtualQueryEx将内存区域读取到64位程序(notepad.exe(

我已经弄清楚了:

  • 从32位进程中,我只能使用MEMORY_BASIC_INFORMATION32结构msdn-doc读取32位进程
  • 从64位进程中,我可以使用MEMORY_BASIC_INFORMATION64结构msdn-doc读取64位和32位进程
  • "Any CPU">配置中,我得到的组件与将程序作为x86 32位程序运行时完全相同

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

非常感谢你未来的回答。我真的很想知道。

感谢@hans-passant的answear:

解决方案平台名称在C#项目中无关紧要,它只对C++项目重要。使用不同构建工具的项目是很重要的。唯一重要的设置是EXE项目上的设置,即强制使用特定抖动的设置。项目>属性>构建选项卡>首选32位和平台目标。他们试图在VS2010btw中改变这一点,将C#项目的解决方案平台名称命名为"x86"。大失败的鲸鱼,回到VS2012 中的AnyCPU

然后,对我有效的解决方案只是取消选中"首选32位",以查看可视化选择64位程序作为调试和发布模式的解决方案。

再次感谢。

最新更新