LPFN_ISWOW64PROCESS fnIsWow64Process;
typedef BOOL (WINAPI *TWow64DisableWow64FsRedirection)(PVOID *);
TWow64DisableWow64FsRedirection fnWow64DisableWow64FsRedirection=NULL;//
typedef BOOL (WINAPI *TWow64RevertWow64FsRedirection)(PVOID );
TWow64RevertWow64FsRedirection fnWow64RevertWow64FsRedirection=NULL;//
BOOL IsWow64()
{
BOOL bIsWow64 = FALSE;
fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
PrintLog(_T("fnIsWow64Process entry"));
if(NULL != fnIsWow64Process)
{
PrintLog(_T("fnIsWow64Process is not NULL"));
if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
{
;//handle error
PrintLog(_T("fnIsWow64Process is not success"));
}
}
return bIsWow64;
}
void WowRedirectionTest(void)
{
PVOID Value = NULL;
HINSTANCE hlibrary;
fnWow64DisableWow64FsRedirection = (TWow64DisableWow64FsRedirection) GetProcAddress(hlibrary,"Wow64DisableWow64FsRedirection");
if (!fnWow64DisableWow64FsRedirection)
{
return ;
}
fnWow64RevertWow64FsRedirection = (TWow64RevertWow64FsRedirection) GetProcAddress(hlibrary,"Wow64RevertWow64FsRedirection");
if (!fnWow64RevertWow64FsRedirection)
{
return ;
}
fnWow64DisableWow64FsRedirection(&Value);
//do somethings
fnWow64RevertWow64FsRedirection(&Value);
}