Compartilhar via


Função IsWow64Message (winuser.h)

Determina se a última mensagem lida da fila do thread atual se originou de um processo WOW64 .

Sintaxe

BOOL IsWow64Message();

Valor retornado

A função retornará TRUE se a última mensagem lida da fila do thread atual se originar de um processo WOW64 e FALSE caso contrário.

Comentários

Essa função é útil para ajudar você a desenvolver aplicativos nativos de 64 bits que podem receber mensagens privadas enviadas de aplicativos cliente de 32 bits, se as mensagens estiverem associadas a estruturas de dados que contenham dados dependentes de ponteiro. Nessas situações, você pode chamar essa função em seu aplicativo nativo de 64 bits para determinar se a mensagem se originou de um processo WOW64 e, em seguida, bater a mensagem adequadamente.

Exemplos

Para compatibilidade com sistemas operacionais que não dão suporte a essa função, chame GetProcAddress para detectar se IsWow64Message está implementado no User32.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 User32.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_ISWOW64MESSAGE) (void);

LPFN_ISWOW64MESSAGE fnIsWow64Message;

BOOL IsWow64Msg()
{
    // IsWow64Message is not available on all supported versions of Windows
    // Use LoadLibrary to ensure that the DLL containing the function is loaded
    // and GetProcAddress to get a pointer to the function if available.

    fnIsWow64Message = (LPFN_ISWOW64MESSAGE) GetProcAddress(
        LoadLibrary(TEXT("user32")), "IsWow64Message");
  
    if (NULL != fnIsWow64Message)
    {        
        return (fnIsWow64Message());
    }
    else return FALSE;
}

int main( void )
{
    if(IsWow64Msg())
    {
        _tprintf(TEXT("The last message was from a 32-bit process.\n"));
    }
    else if (NULL == fnIsWow64Message )
    {
        _tprintf(TEXT("The IsWow64Message function is not available (%d).\n"), GetLastError());
    }
    else 
    {
        _tprintf(TEXT("The last message was from a 64-bit process.\n"));
    }
    return 0;
}

Requisitos

   
Cliente mínimo com suporte Windows Vista, Windows XP com SP2 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008, Windows Server 2003 com SP1 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winuser.h (inclua Windows.h)
Biblioteca User32.lib
DLL User32.dll

Confira também

GetNativeSystemInfo

IsWow64Process

WOW64