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 處理器的 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 應用程式]
目標平台 Windows
標頭 wow64apiset.h (Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

GetNativeSystemInfo

IsWow64Message

WOW64