Share via


Función IsWow64Message (winuser.h)

Determina si el último mensaje leído de la cola del subproceso actual se originó en un proceso WOW64 .

Sintaxis

BOOL IsWow64Message();

Valor devuelto

La función devuelve TRUE si el último mensaje leído de la cola del subproceso actual se originó en un proceso WOW64 y FALSE en caso contrario.

Comentarios

Esta función es útil para ayudarle a desarrollar aplicaciones nativas de 64 bits que pueden recibir mensajes privados enviados desde aplicaciones cliente de 32 bits, si los mensajes están asociados a estructuras de datos que contienen datos dependientes del puntero. En estas situaciones, puede llamar a esta función en la aplicación nativa de 64 bits para determinar si el mensaje se originó en un proceso WOW64 y, a continuación, procesar correctamente el mensaje.

Ejemplos

Para compatibilidad con sistemas operativos que no admiten esta función, llame a GetProcAddress para detectar si IsWow64Message se implementa en User32.dll. Si GetProcAddress se realiza correctamente, es seguro llamar a esta función. De lo contrario, WOW64 no está presente. Tenga en cuenta que esta técnica no es una manera confiable de detectar si el sistema operativo es una versión de 64 bits de Windows porque el User32.dll en las versiones actuales de Windows de 32 bits también contiene esta función.

#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 compatible Windows Vista, Windows XP con SP2 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008, Windows Server 2003 con SP1 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winuser.h (incluya Windows.h)
Library User32.lib
Archivo DLL User32.dll

Consulte también

GetNativeSystemInfo

IsWow64Process

WOW64