Condividi tramite


Funzione IsWow64Message (winuser.h)

Determina se l'ultimo messaggio letto dalla coda del thread corrente ha avuto origine da un processo WOW64 .

Sintassi

BOOL IsWow64Message();

Valore restituito

La funzione restituisce TRUE se l'ultimo messaggio letto dalla coda del thread corrente ha avuto origine da un processo WOW64 e FALSE in caso contrario.

Commenti

Questa funzione è utile per sviluppare applicazioni native a 64 bit in grado di ricevere messaggi privati inviati da applicazioni client a 32 bit, se i messaggi sono associati a strutture di dati contenenti dati dipendenti dal puntatore. In queste situazioni, è possibile chiamare questa funzione nell'applicazione nativa a 64 bit per determinare se il messaggio è stato originato da un processo WOW64 e quindi eseguire il messaggio in modo appropriato.

Esempio

Per la compatibilità con i sistemi operativi che non supportano questa funzione, chiamare GetProcAddress per rilevare se IsWow64Message è implementato in User32.dll. Se GetProcAddress ha esito positivo, è possibile chiamare questa funzione in modo sicuro. In caso contrario, WOW64 non è presente. Si noti che questa tecnica non è un modo affidabile per rilevare se il sistema operativo è una versione a 64 bit di Windows perché il User32.dll nelle versioni correnti di Windows a 32 bit contiene anche questa funzione.

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

Requisiti

   
Client minimo supportato Windows Vista, Windows XP con SP2 [solo app desktop]
Server minimo supportato Windows Server 2008, Windows Server 2003 con SP1 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll

Vedi anche

GetNativeSystemInfo

IsWow64Process

WOW64