Função IsWow64Process (wow64apiset.h)

Determina se o processo especificado está em execução em WOW64 ou um Intel64 do processador x64.

Sintaxe

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

Parâmetros

[in] hProcess

Um identificador para o processo. O identificador deve ter o direito de acesso PROCESS_QUERY_INFORMATION ou PROCESS_QUERY_LIMITED_INFORMATION. Para obter mais informações, consulte Direitos de acesso e segurança do processo.

Windows Server 2003 e Windows XP: O identificador deve ter o direito de acesso PROCESS_QUERY_INFORMATION.

[out] Wow64Process

Um ponteiro para um valor definido como TRUE se o processo estiver em execução em WOW64 em um processador Intel64 ou x64. Se o processo estiver em execução no Windows de 32 bits, o valor será definido como FALSE. Se o processo for um aplicativo de 32 bits em execução no Windows 10 de 64 bits no ARM, o valor será definido como FALSE. Se o processo for um aplicativo de 64 bits em execução no Windows de 64 bits, o valor também será definido como FALSE.

Valor retornado

Se a função for bem-sucedida, o valor retornado será um valor diferente de zero.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

Comentários

Os aplicativos devem usar IsWow64Process2 em vez de IsWow64Process para determinar se um processo está em execução em WOW. IsWow64Process2 remove a ambiguidade inerente a vários ambientes WOW retornando explicitamente a arquitetura do host e do convidado para um determinado processo. Os aplicativos podem usar essas informações para identificar de forma confiável situações como em execução em emulação no ARM64. Para compilar um aplicativo que usa essa função, defina _WIN32_WINNT como 0x0501 ou posterior. Para obter mais informações, consulte Usando os cabeçalhos do Windows.

Exemplos

Para compatibilidade com sistemas operacionais que não dão suporte a essa função, chame GetProcAddress para detectar se IsWow64Process está implementado em Kernel32.dll. Se GetProcAddress for bem-sucedido, será seguro chamar essa função. Caso contrário, WOW64 não está presente. Observe que essa técnica não é uma maneira confiável de detectar se o sistema operacional é uma versão de 64 bits do Windows porque o Kernel32.dll nas versões atuais do Windows de 32 bits também contém essa função.

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

Requisitos

   
Cliente mínimo com suporte Windows Vista, Windows XP com SP2 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008, Windows Server 2003 com SP1 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho wow64apiset.h (inclua Windows.h no Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

GetNativeSystemInfo

IsWow64Message

WOW64