Fungsi IsWow64Message (winuser.h)
Menentukan apakah pesan terakhir yang dibaca dari antrean utas saat ini berasal dari proses WOW64 .
Sintaks
BOOL IsWow64Message();
Mengembalikan nilai
Fungsi mengembalikan TRUE jika pesan terakhir yang dibaca dari antrean utas saat ini berasal dari proses WOW64, dan FALSE sebaliknya.
Keterangan
Fungsi ini berguna untuk membantu Anda mengembangkan aplikasi asli 64-bit yang dapat menerima pesan privat yang dikirim dari aplikasi klien 32-bit, jika pesan dikaitkan dengan struktur data yang berisi data yang bergantung pada pointer. Dalam situasi ini, Anda dapat memanggil fungsi ini di aplikasi asli 64-bit Anda untuk menentukan apakah pesan berasal dari proses WOW64 dan kemudian mengacak pesan dengan tepat.
Contoh
Untuk kompatibilitas dengan sistem operasi yang tidak mendukung fungsi ini, panggil GetProcAddress untuk mendeteksi apakah IsWow64Message diimplementasikan dalam User32.dll. Jika GetProcAddress berhasil, aman untuk memanggil fungsi ini. Jika tidak, WOW64 tidak ada. Perhatikan bahwa teknik ini bukan cara yang dapat diandalkan untuk mendeteksi apakah sistem operasi adalah versi Windows 64-bit karena User32.dll dalam versi Windows 32-bit saat ini juga berisi fungsi ini.
#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;
}
Persyaratan
Klien minimum yang didukung | Windows Vista, Windows XP dengan SP2 [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008, Windows Server 2003 dengan SP1 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winuser.h (sertakan Windows.h) |
Pustaka | User32.lib |
DLL | User32.dll |