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 |