原因:32位系统的Kernel32.dll里面没有这个函数
如果代码同时需要适配32位和64位的话,使用下面这个封装好的函数来替代
注意点:关闭重定向,运行你所需要代码后,需要重新打开重定向
//关闭重定向
void DisableWoW64FSRedirect()
{
BOOL ret;
HINSTANCE hlibrary;
typedef int (__stdcall * Wow64DisableWow64FsRedirection)(LPVOID);
Wow64DisableWow64FsRedirection f_Wow64DisableWow64FsRedirection = NULL;
#ifdef _UNICODE
hlibrary = LoadLibrary(L"Kernel32.dll");
#else
hlibrary = LoadLibrary("Kernel32.dll");
#endif
if(hlibrary){
f_Wow64DisableWow64FsRedirection = (Wow64DisableWow64FsRedirection) GetProcAddress(hlibrary,"Wow64DisableWow64FsRedirection");
if(!f_Wow64DisableWow64FsRedirection) {
FreeLibrary(hlibrary);
return ;
}
}
else {
return ;
}
ret = f_Wow64DisableWow64FsRedirection (&mp_oldvalue);
if(!ret) {
}
FreeLibrary(hlibrary);
return ;
}
//恢复重定向
void RestoreWoW64FSRedirect()
{
HINSTANCE hlibrary;
typedef int (__stdcall * Wow64RevertWow64FsRedirection)(LPVOID);
Wow64RevertWow64FsRedirection f_Wow64RevertWow64FsRedirection = NULL;
#ifdef _UNICODE
hlibrary = LoadLibrary(L"Kernel32.dll");
#else
hlibrary = LoadLibrary("Kernel32.dll");
#endif
if(hlibrary){
f_Wow64RevertWow64FsRedirection = (Wow64RevertWow64FsRedirection) GetProcAddress(hlibrary,"Wow64RevertWow64FsRedirection");
if(!f_Wow64RevertWow64FsRedirection) {
FreeLibrary(hlibrary);
return ;
}
}
else {
return ;
}
f_Wow64RevertWow64FsRedirection(mp_oldvalue);
FreeLibrary(hlibrary);
return ;
}