使用 IsWow64Process 而不是单独编译

Using IsWow64Process instead of compiling separately

本文关键字:单独 编译 IsWow64Process 使用      更新时间:2023-10-16

只是想知道函数'IsWow64Process'的使用是否比为64位操作系统单独编译它更好。仍然需要更改某些地址的偏移量,以便程序实际上保持不变。

IsWow64Process()只对32位进程有意义,因为它说明了所述进程是否在64位系统上运行。该过程仍然是完全 32 位的,具有所有后果,例如,它只能加载 32 位 DLL,并且只能使用 2 GB 的内存。

请注意,在许多情况下,将代码设为 64 位并不值得,尤其是当您还需要交付 32 位代码时,尤其是当几乎所有版本的 Windows 都允许运行 32 位代码时。有关更多详细信息,请参阅此答案。

IsWow64Process()告诉你,你是一个在64位系统上运行的32位应用。它不会使您成为 64 位应用程序。

IsWow64Process不是

独立于平台的。

我通过查看std::ptrdiff_t的大小来确定位宽:

constexpr /*remove if compiler does not support*/ unsigned long GetProcessBits()
{
    return sizeof(std::ptrdiff_t) /*size in bytes*/ * 8U;
}
如果在 32

位模式下运行,这将返回 32,如果在 64 位模式下运行,这将返回 64。