BOOL IsWow64(HANDLE process) { BOOL bIsWow64 = FALSE; typedef BOOL(WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); LPFN_ISWOW64PROCESS fnIsWow64Process; fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(TEXT("kernel32")), "IsWow64Process"); if (NULL != fnIsWow64Process) { if (!fnIsWow64Process(process, &bIsWow64)) { //handle error } } return bIsWow64; } bool IsX86Process(HANDLE process) { SYSTEM_INFO systemInfo = { 0 }; GetNativeSystemInfo(&systemInfo); // x86 environment if (systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL) return true; // Check if the process is an x86 process that is running on x64 environment. // IsWow64 returns true if the process is an x86 process return IsWow64(process); }
source share