IsWow64Process FunctionDetermines whether the specified process is running under WOW64. BOOL WINAPI IsWow64Process( __in HANDLE hProcess, __out PBOOL Wow64Process );Parameters hProcess A handle to the process.Wow64Process A pointer to a value that is set to TRUE if the process is running under WOW64. Otherwise, the value is set to FALSE.Return Value If the function succeeds, the return value is a nonzero value.If the function fails, the return value is zero. To get extended error information, call GetLastError.Res If the application is a 64-bit application running under 64-bit Windows, the Wow64Process parameter is set to FALSE.To compile an application that uses this function, define _WIN32_WINNT as 0x0501 or later. For more information, see Using the SDK Headers.
BOOL WINAPI IsWow64Process(
__in HANDLE hProcess,
__out PBOOL Wow64Process
);Parameters
hProcess
A handle to the process.Wow64Process
A pointer to a value that is set to TRUE if the process is running under WOW64. Otherwise, the value is set to FALSE.Return Value
If the function succeeds, the return value is a nonzero value.If the function fails, the return value is zero. To get extended error information, call GetLastError.Res
If the application is a 64-bit application running under 64-bit Windows, the Wow64Process parameter is set to FALSE.To compile an application that uses this function, define _WIN32_WINNT as 0x0501 or later. For more information, see Using the SDK Headers.
#include <stdio.h>typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);LPFN_ISWOW64PROCESS fnIsWow64Process;BOOL IsWow64()
{
BOOL bIsWow64 = FALSE; fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(
GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
if (NULL != fnIsWow64Process)
{
if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
{
// handle error
}
}
return bIsWow64;
}void main()
{
if(IsWow64())
printf("Running on WOW64\n");
else printf("Running on 32-bit Windows\n");
}