0

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

4

3 回答 3

1

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

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

于 2013-10-07T08:52:07.090 回答
1

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

于 2013-10-07T08:49:59.070 回答
0

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。

于 2013-10-07T08:50:08.213 回答