Fungsi IsWow64Process (wow64apiset.h)

Menentukan apakah proses yang ditentukan berjalan di bawah WOW64 atau prosesor Intel64 x64.

Sintaks

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

Parameter

[in] hProcess

Handel untuk proses. Handel harus memiliki hak akses PROCESS_QUERY_INFORMATION atau PROCESS_QUERY_LIMITED_INFORMATION. Untuk informasi selengkapnya, lihat Keamanan Proses dan Hak Akses.

Windows Server 2003 dan Windows XP: Handel harus memiliki hak akses PROCESS_QUERY_INFORMATION.

[out] Wow64Process

Penunjuk ke nilai yang diatur ke TRUE jika proses berjalan di bawah WOW64 pada prosesor Intel64 atau x64. Jika proses berjalan di bawah Windows 32-bit, nilainya diatur ke FALSE. Jika prosesnya adalah aplikasi 32-bit yang berjalan di bawah Windows 10 64-bit di ARM, nilainya diatur ke FALSE. Jika prosesnya adalah aplikasi 64-bit yang berjalan di bawah Windows 64-bit, nilainya juga diatur ke FALSE.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan adalah nilai bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Aplikasi harus menggunakan IsWow64Process2 alih-alih IsWow64Process untuk menentukan apakah proses berjalan di bawah WOW. IsWow64Process2 menghapus ambiguitas yang melekat pada beberapa lingkungan WOW dengan secara eksplisit mengembalikan arsitektur host dan tamu untuk proses tertentu. Aplikasi dapat menggunakan informasi ini untuk mengidentifikasi situasi dengan andal seperti berjalan di bawah emulasi di ARM64. Untuk mengkompilasi aplikasi yang menggunakan fungsi ini, tentukan _WIN32_WINNT sebagai 0x0501 atau yang lebih baru. Untuk informasi selengkapnya, lihat Menggunakan Header Windows.

Contoh

Untuk kompatibilitas dengan sistem operasi yang tidak mendukung fungsi ini, panggil GetProcAddress untuk mendeteksi apakah IsWow64Process diimplementasikan dalam Kernel32.dll. Jika GetProcAddress berhasil, aman untuk memanggil fungsi ini. Jika tidak, WOW64 tidak ada. Perhatikan bahwa teknik ini bukan cara yang dapat diandalkan untuk mendeteksi apakah sistem operasi adalah windows versi 64-bit karena Kernel32.dll dalam versi Windows 32-bit saat ini juga berisi fungsi ini.

#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;
}

Persyaratan

   
Klien minimum yang didukung Windows Vista, Windows XP dengan SP2 [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008, Windows Server 2003 dengan SP1 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header wow64apiset.h (termasuk Windows.h pada Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

GetNativeSystemInfo

IsWow64Message

WOW64