Funzione IsWow64Process (wow64apiset.h)
Determina se il processo specificato è in esecuzione in WOW64 o in un processore Intel64 x64.
Sintassi
BOOL IsWow64Process(
[in] HANDLE hProcess,
[out] PBOOL Wow64Process
);
Parametri
[in] hProcess
Handle per il processo. L'handle deve avere il diritto di accesso PROCESS_QUERY_INFORMATION o PROCESS_QUERY_LIMITED_INFORMATION. Per altre informazioni, vedere Process Security and Access Rights.
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, x64 o ARM64. Se il processo è in esecuzione in Windows a 32 bit, il valore viene impostato su FALSE. Se il processo è un'applicazione a 32 bit in esecuzione in Windows 10 a 64 bit in ARM, il valore viene impostato su FALSE. Se il processo è un'applicazione a 64 bit in esecuzione in Windows a 64 bit, il valore viene 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 ottenere informazioni estese sull'errore, chiamare GetLastError.
Osservazioni
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'emulazione in ARM64. Per compilare un'applicazione che usa questa funzione, definire _WIN32_WINNT come 0x0501 o versione successiva. Per altre informazioni, vedere Uso delle intestazioni di Windows.
Esempi
Per compatibilità con i sistemi operativi che non supportano questa funzione, chiamare GetProcAddress per rilevare se IsWow64Process viene implementato in Kernel32.dll. Se GetProcAddress ha esito positivo, è possibile chiamare questa funzione in modo sicuro. 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é il 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;
}
Fabbisogno
Requisito | Valore |
---|---|
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 | Finestre |
intestazione | wow64apiset.h (include Windows.h in Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
libreria | Kernel32.lib |
dll | Kernel32.dll |