Some fixes and improvements to wow64fsredir_disable() function.
This commit is contained in:
parent
3916593e63
commit
a71ae3394d
@ -259,8 +259,8 @@ namespace MUtils
|
|||||||
MUTILS_API QString get_file_path(const int &fd);
|
MUTILS_API QString get_file_path(const int &fd);
|
||||||
|
|
||||||
//WOW64 redirection
|
//WOW64 redirection
|
||||||
MUTILS_API bool wow64fsredir_disable(void *oldValue);
|
MUTILS_API bool wow64fsredir_disable(uintptr_t &oldValue);
|
||||||
MUTILS_API bool wow64fsredir_revert (void *oldValue);
|
MUTILS_API bool wow64fsredir_revert (const uintptr_t oldValue);
|
||||||
|
|
||||||
//Environment variables
|
//Environment variables
|
||||||
MUTILS_API QString get_envvar(const QString &name);
|
MUTILS_API QString get_envvar(const QString &name);
|
||||||
|
@ -1715,28 +1715,31 @@ void MUtils::OS::shell_change_notification(void)
|
|||||||
// WOW64 REDIRECTION
|
// WOW64 REDIRECTION
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
typedef BOOL (_stdcall *Wow64DisableWow64FsRedirectionFun)(void *OldValue);
|
typedef BOOL (_stdcall *Wow64DisableWow64FsRedirectionFun)(PVOID *OldValue);
|
||||||
typedef BOOL (_stdcall *Wow64RevertWow64FsRedirectionFun )(void *OldValue);
|
typedef BOOL (_stdcall *Wow64RevertWow64FsRedirectionFun) (PVOID OldValue);
|
||||||
|
|
||||||
bool MUtils::OS::wow64fsredir_disable(void *oldValue)
|
bool MUtils::OS::wow64fsredir_disable(uintptr_t &oldValue)
|
||||||
{
|
{
|
||||||
|
oldValue = reinterpret_cast<uintptr_t>(nullptr);
|
||||||
const Wow64DisableWow64FsRedirectionFun wow64redir_disable = MUtils::Win32Utils::resolve<Wow64DisableWow64FsRedirectionFun>(QLatin1String("kernel32"), QLatin1String("Wow64DisableWow64FsRedirection"));
|
const Wow64DisableWow64FsRedirectionFun wow64redir_disable = MUtils::Win32Utils::resolve<Wow64DisableWow64FsRedirectionFun>(QLatin1String("kernel32"), QLatin1String("Wow64DisableWow64FsRedirection"));
|
||||||
if(wow64redir_disable)
|
if(wow64redir_disable)
|
||||||
{
|
{
|
||||||
if (wow64redir_disable(oldValue))
|
PVOID temp = NULL;
|
||||||
|
if (wow64redir_disable(&temp))
|
||||||
{
|
{
|
||||||
|
oldValue = reinterpret_cast<uintptr_t>(temp);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MUtils::OS::wow64fsredir_revert(void *oldValue)
|
bool MUtils::OS::wow64fsredir_revert(const uintptr_t oldValue)
|
||||||
{
|
{
|
||||||
const Wow64RevertWow64FsRedirectionFun wow64redir_disable = MUtils::Win32Utils::resolve<Wow64RevertWow64FsRedirectionFun>(QLatin1String("kernel32"), QLatin1String("Wow64RevertWow64FsRedirection"));
|
const Wow64RevertWow64FsRedirectionFun wow64redir_disable = MUtils::Win32Utils::resolve<Wow64RevertWow64FsRedirectionFun>(QLatin1String("kernel32"), QLatin1String("Wow64RevertWow64FsRedirection"));
|
||||||
if (wow64redir_disable)
|
if (wow64redir_disable)
|
||||||
{
|
{
|
||||||
if (wow64redir_disable(oldValue))
|
if (wow64redir_disable(reinterpret_cast<PVOID>(oldValue)))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user