Compartilhar via


Função IsWow64Process (wow64apiset.h)

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

Sintaxe

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

Parâmetros

[in] hProcess

Um identificador para o processo. O identificador deve ter o acesso PROCESS_QUERY_INFORMATION ou PROCESS_QUERY_LIMITED_INFORMATION direito. Para obter mais informações, consulte Process Security and Access Rights.

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

[out] Wow64Process

Um ponteiro para um valor definido como TRUE se o processo estiver em execução em WOW64 em um processador Intel64, x64 ou ARM64. 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 sob o 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 de retorno

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.

Observações

Os aplicativos devem usar IsWow64Process2 em vez de IsWow64Process para determinar se um processo está sendo executado 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 a 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 no 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

Requisito Valor
de cliente com suporte mínimo Windows Vista, Windows XP com SP2 [aplicativos da área de trabalho | Aplicativos UWP]
servidor com suporte mínimo Windows Server 2008, Windows Server 2003 com SP1 [aplicativos da área de trabalho | Aplicativos UWP]
da 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
de DLL Kernel32.dll

Consulte também

GetNativeSystemInfo

IsWow64Message

WOW64