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 |