Fonction IsWow64Message (winuser.h)
Détermine si le dernier message lu dans la file d’attente du thread actuel provient d’un processus WOW64 .
Syntaxe
BOOL IsWow64Message();
Valeur de retour
La fonction retourne TRUE si le dernier message lu à partir de la file d’attente du thread actuel provient d’un processus WOW64, et FALSE dans le cas contraire.
Remarques
Cette fonction est utile pour vous aider à développer des applications natives 64 bits qui peuvent recevoir des messages privés envoyés à partir d’applications clientes 32 bits, si les messages sont associés à des structures de données qui contiennent des données dépendantes du pointeur. Dans ce cas, vous pouvez appeler cette fonction dans votre application native 64 bits pour déterminer si le message provient d’un processus WOW64, puis l’envoyer correctement.
Exemples
Pour assurer la compatibilité avec les systèmes d’exploitation qui ne prennent pas en charge cette fonction, appelez GetProcAddress pour détecter si IsWow64Message est implémenté dans User32.dll. Si GetProcAddress réussit, il est sûr d’appeler cette fonction. Sinon, WOW64 n’est pas présent. Notez que cette technique n’est pas un moyen fiable de détecter si le système d’exploitation est une version 64 bits de Windows, car le User32.dll dans les versions actuelles de Windows 32 bits contient également cette fonction.
#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;
}
Configuration requise
Client minimal pris en charge | Windows Vista, Windows XP avec SP2 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008, Windows Server 2003 avec SP1 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winuser.h (inclure Windows.h) |
Bibliothèque | User32.lib |
DLL | User32.dll |