IsWow64Message-Funktion (winuser.h)
Bestimmt, ob die letzte nachricht, die aus der Warteschlange des aktuellen Threads gelesen wurde, aus einem WOW64-Prozess stammt.
Syntax
BOOL IsWow64Message();
Rückgabewert
Die Funktion gibt TRUE zurück, wenn die letzte aus der Warteschlange des aktuellen Threads gelesene Nachricht aus einem WOW64-Prozess stammt, andernfalls FALSE.
Hinweise
Diese Funktion ist nützlich, um Sie bei der Entwicklung nativer 64-Bit-Anwendungen zu unterstützen, die private Nachrichten empfangen können, die von 32-Bit-Clientanwendungen gesendet werden, wenn die Nachrichten Datenstrukturen zugeordnet sind, die zeigerabhängige Daten enthalten. In diesen Situationen können Sie diese Funktion in Ihrer nativen 64-Bit-Anwendung aufrufen, um zu ermitteln, ob die Nachricht aus einem WOW64-Prozess stammt, und dann die Nachricht entsprechend zu entschlüsseln.
Beispiele
Rufen Sie zur Kompatibilität mit Betriebssystemen, die diese Funktion nicht unterstützen, GetProcAddress auf, um zu ermitteln, ob IsWow64Message in User32.dll implementiert ist. Wenn GetProcAddress erfolgreich ist, kann diese Funktion sicher aufgerufen werden. Andernfalls ist WOW64 nicht vorhanden. Beachten Sie, dass dieses Verfahren keine zuverlässige Möglichkeit darstellt, um zu erkennen, ob das Betriebssystem eine 64-Bit-Version von Windows ist, da die User32.dll in aktuellen Versionen von 32-Bit-Windows diese Funktion ebenfalls enthält.
#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;
}
Anforderungen
Unterstützte Mindestversion (Client) | Windows Vista, Windows XP mit SP2 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008, Windows Server 2003 mit SP1 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winuser.h (windows.h einschließen) |
Bibliothek | User32.lib |
DLL | User32.dll |