Condividi tramite


Funzione IsWow64Process (wow64apiset.h)

Determina se il processo specificato è in esecuzione in WOW64 o in un processore Intel64 di x64.

Sintassi

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

Parametri

[in] hProcess

Handle per il processo. L'handle deve avere il PROCESS_QUERY_INFORMATION o PROCESS_QUERY_LIMITED_INFORMATION diritto di accesso. Per altre informazioni, vedere Elaborare diritti di sicurezza e accesso.

Windows Server 2003 e Windows XP: L'handle deve avere il diritto di accesso PROCESS_QUERY_INFORMATION.

[out] Wow64Process

Puntatore a un valore impostato su TRUE se il processo è in esecuzione in WOW64 in un processore Intel64 o x64. Se il processo è in esecuzione in Windows a 32 bit, il valore è impostato su FALSE. Se il processo è un'applicazione a 32 bit in esecuzione in Windows 10 a 64 bit in ARM, il valore è impostato su FALSE. Se il processo è un'applicazione a 64 bit in esecuzione in Windows a 64 bit, il valore è impostato anche su FALSE.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un valore diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Le applicazioni devono usare IsWow64Process2 anziché IsWow64Process per determinare se un processo è in esecuzione in WOW. IsWow64Process2 rimuove l'ambiguità intrinseca a più ambienti WOW restituendo in modo esplicito l'architettura dell'host e del guest per un determinato processo. Le applicazioni possono usare queste informazioni per identificare in modo affidabile situazioni come l'esecuzione in emulazione in ARM64. Per compilare un'applicazione che usa questa funzione, definire _WIN32_WINNT come 0x0501 o versioni successive. Per altre informazioni, vedere Uso delle intestazioni di Windows.

Esempio

Per la compatibilità con i sistemi operativi che non supportano questa funzione, chiamare GetProcAddress per rilevare se IsWow64Process viene implementato in Kernel32.dll. Se GetProcAddress riesce, è sicuro chiamare questa funzione. In caso contrario, WOW64 non è presente. Si noti che questa tecnica non è un modo affidabile per rilevare se il sistema operativo è una versione a 64 bit di Windows perché la Kernel32.dll nelle versioni correnti di Windows a 32 bit contiene anche questa funzione.

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

Requisiti

   
Client minimo supportato Windows Vista, Windows XP con SP2 [app desktop | App UWP]
Server minimo supportato Windows Server 2008, Windows Server 2003 con SP1 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione wow64apiset.h (includere Windows.h in Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

GetNativeSystemInfo

IsWow64Message

WOW64