c++ - 64 位 Windows - 我需要使用 IMAGE_NT_HEADERS64 吗?

标签 c++ windows visual-studio 64-bit 32bit-64bit

我正在尝试在 Windows 64 环境中读取某些进程的 PE header ,因为我的代码仅通过读取 32 位和 64 位可执行文件的 IMAGE_NT_HEADERS 结构来工作,我想知道:我是否需要编写类似

if executable is 64 bit
 use IMAGE_NT_HEADERS64
else
 use IMAGE_NT_HEADERS

?我的代码似乎只对 64 位和 32 位进程使用 IMAGE_NT_HEADERS 就可以工作,我是不是遗漏了什么?

最佳答案

很明显,区别在于OptionalHeader的某些字段。例如 64 位版本的 ImageBase 是 64 位大小。如果您的代码在 ImageBase(包括)之后不使用任何字段 - 您的代码将通过测试。

关于c++ - 64 位 Windows - 我需要使用 IMAGE_NT_HEADERS64 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14131443/

相关文章:

c++ - 为什么在继承的标准布局规则中有非静态成员的规则?

C++ 输入性能

windows - 为什么 @font-face 在 Windows 中呈现奇怪的效果?

c# - 如何在C#中调用Windows的屏幕保护程序?

c# - 动态关键字导致 Visual Studio 2010 代码分析中的圈复杂度 > 25

C++ 将数组传递给函数

c++ - 可选择将函数变量作为参数

c - Windows 服务作为控制台应用程序运行,但作为服务自动关闭

c# - 如何在 WIX 的安装标题中显示版本号?

c# - 有什么方法可以将我的 C# 项目添加为 IronPython/IronRuby 中的引用吗?