【问题标题】:Question about the IsWow64Process function关于 IsWow64Process 函数的问题
【发布时间】: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 位?

【问题讨论】:

标签: windows winapi process


【解决方案1】:

直接来自 Microsoft Docs 网站:

IsWow64Process2 提供了对 IsWow64Process 的改进直接替代。

还有:

IsWow64Process2 通过显式返回给定进程的主机和来宾架构来消除多个 WOW 环境固有的歧义。

有了这个新函数,当它返回目标进程的体系结构和机器的体系结构时,混乱就被清除了。您可以使用这些值来验证 32 位进程是否真的在 64 位 cpu 上运行,或者以其他方式运行。

这是链接:IsWow64Process2


(感谢@Remy Lebeau 的澄清) 但是,由于此功能在 Windows 10 版本 1511 之前的 Windows 版本上不可用,因此您可以使用 GetSystemInfoGetNativeSystemInfo(WOW64 程序) 来确定 CPU 架构。然后,您可以使用从IsWow64Process 返回的信息来确定目标进程的架构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 2011-09-08
    • 2015-10-08
    • 2023-03-28
    相关资源
    最近更新 更多