IsWow64Process, fonction (wow64apiset.h)
Détermine si le processus spécifié s’exécute sous WOW64 ou un processeur Intel64 x64.
Syntaxe
BOOL IsWow64Process(
[in] HANDLE hProcess,
[out] PBOOL Wow64Process
);
Paramètres
[in] hProcess
Handle du processus. Le handle doit avoir le droit d’accès PROCESS_QUERY_INFORMATION ou PROCESS_QUERY_LIMITED_INFORMATION. Pour plus d’informations, consultez Droits d’accès et de sécurité des processus.
Windows Server 2003 et Windows XP : Le handle doit avoir le droit d’accès PROCESS_QUERY_INFORMATION.
[out] Wow64Process
Pointeur vers une valeur définie sur TRUE si le processus s’exécute sous WOW64 sur un processeur Intel64 ou x64. Si le processus s’exécute sous Windows 32 bits, la valeur est définie sur FALSE. Si le processus est une application 32 bits s’exécutant sous Windows 10 64 bits sur ARM, la valeur est définie sur FALSE. Si le processus est une application 64 bits s’exécutant sous Windows 64 bits, la valeur est également définie sur FALSE.
Valeur retournée
Si la fonction réussit, la valeur de retour est une valeur différente de zéro.
Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
Les applications doivent utiliser IsWow64Process2 au lieu de IsWow64Process pour déterminer si un processus s’exécute sous WOW. IsWow64Process2 supprime l’ambiguïté inhérente à plusieurs environnements WOW en retournant explicitement l’architecture de l’hôte et de l’invité pour un processus donné. Les applications peuvent utiliser ces informations pour identifier de manière fiable des situations telles que l’exécution sous émulation sur ARM64. Pour compiler une application qui utilise cette fonction, définissez _WIN32_WINNT comme 0x0501 ou version ultérieure. Pour plus d’informations, consultez Utilisation des en-têtes Windows.
Exemples
Pour une compatibilité avec les systèmes d’exploitation qui ne prennent pas en charge cette fonction, appelez GetProcAddress pour détecter si IsWow64Process est implémenté dans Kernel32.dll. Si GetProcAddress réussit, il est sûr d’appeler cette fonction. Sinon, WOW64 n’est pas présent. Notez que cette technique n’est pas un moyen fiable de détecter si le système d’exploitation est une version 64 bits de Windows, car la Kernel32.dll dans les versions actuelles de Windows 32 bits contient également cette fonction.
#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;
}
Spécifications
Client minimal pris en charge | Windows Vista, Windows XP avec SP2 [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows Server 2008, Windows Server 2003 avec SP1 [applications de bureau | Applications UWP] |
Plateforme cible | Windows |
En-tête | wow64apiset.h (inclure Windows.h sur Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |