共用方式為


IsWow64Process 函式 (wow64apiset.h)

判斷指定的進程是在 WOW64 或 x64 處理器的 Intel64 下執行。

語法

BOOL IsWow64Process(
  [in]  HANDLE hProcess,
  [out] PBOOL  Wow64Process
);

參數

[in] hProcess

進程的句柄。 句柄必須具有PROCESS_QUERY_INFORMATION或PROCESS_QUERY_LIMITED_INFORMATION訪問許可權。 如需詳細資訊,請參閱 處理安全性和存取權限

Windows Server 2003 和 Windows XP:句柄必須具有PROCESS_QUERY_INFORMATION訪問許可權。

[out] Wow64Process

如果進程在 Intel64、x64 或 ARM64 處理器上的 WOW64 下執行,則為 TRUE 的值指標。 如果進程在32位 Windows 下執行,此值會設定為 FALSE。 如果行程是在 ARM 上的 64 位 Windows 10 下執行的 32 位應用程式,此值會設定為 FALSE。 如果行程是在 64 位 Windows 下執行的 64 位應用程式,值也會設定為 FALSE。

傳回值

如果函式成功,則傳回值是非零值。

如果函式失敗,傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

言論

應用程式應該使用 IsWow64Process2,而不是 IsWow64Process 來判斷進程是否在 WOW 下執行。 IsWow64Process2 藉由明確傳回指定進程的主機和客體架構,移除多個 WOW 環境固有的模棱兩可。 應用程式可以使用這項資訊來可靠地識別在ARM64上執行仿真的情況。 若要編譯使用此函式的應用程式,請將_WIN32_WINNT定義為0x0501或更新版本。 如需詳細資訊,請參閱使用 Windows 標頭

例子

為了與不支援此函式的作系統相容,請呼叫 getProcAddress ,以偵測 isWow64Process 是否在 Kernel32.dll中實作。 如果 GetProcAddress 成功,則呼叫此函式是安全的。 否則,WOW64 不存在。 請注意,這項技術不是偵測作系統是否為64位版本的Windows的可靠方式,因為目前32位 Windows 版本中的 Kernel32.dll 也包含此函式。

#include <windows.h>
#include <tchar.h>

typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);

LPFN_ISWOW64PROCESS fnIsWow64Process;

BOOL IsWow64()
{
    BOOL bIsWow64 = FALSE;

    //IsWow64Process is not available on all supported versions of Windows.
    //Use GetModuleHandle to get a handle to the DLL that contains the function
    //and GetProcAddress to get a pointer to the function if available.

    fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(
        GetModuleHandle(TEXT("kernel32")),"IsWow64Process");

    if(NULL != fnIsWow64Process)
    {
        if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
        {
            //handle error
        }
    }
    return bIsWow64;
}

int main( void )
{
    if(IsWow64())
        _tprintf(TEXT("The process is running under WOW64.\n"));
    else
        _tprintf(TEXT("The process is not running under WOW64.\n"));

    return 0;
}

要求

要求 價值
最低支援的用戶端 Windows Vista、Windows XP 與 SP2 [傳統型應用程式 |UWP 應用程式]
支援的最低伺服器 Windows Server 2008、Windows Server 2003 SP1 [傳統型應用程式 |UWP 應用程式]
目標平臺 窗戶
標頭 wow64apiset.h (包括 Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2 上的 Windows.h)
連結庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

GetNativeSystemInfo

IsWow64Message

WOW64