【发布时间】:2020-03-24 04:35:23
【问题描述】:
在搜索如何确定进程是 64 位还是 32 位进程时,我看到了很多使用 IsWow64Process 函数的建议。在文档中,我看到了这个关于它设置的值的 sn-p:
如果进程在 Intel64 或 x64 处理器上的 WOW64 下运行,则指向设置为 TRUE 的值的指针。如果进程在 32 位 Windows 下运行,则该值设置为 FALSE。如果进程是在 ARM 上的 64 位 Windows 10 下运行的 32 位应用程序,则该值设置为 FALSE。如果进程是在 64 位 Windows 下运行的 64 位应用程序,则该值也设置为 FALSE。
看看最后一句话,听起来有些 64 位应用程序将设置与 32 位应用程序相同的标志!真的是这样吗?如果是,我如何确定一个进程是真正的 32 位还是 64 位?
【问题讨论】:
-
WOW64 是 32 位应用程序在 64 位操作系统上的仿真层中运行的特定情况。
-
您可以区分在 32 位版本的 Windows 上运行的 32 位应用程序和在 64 位版本的 Windows 上运行的 64 位应用程序。在编译时。对于后一种情况,定义了
_WIN64预处理器符号。见How to detect programmatically whether you are running on 64-bit Windows。