ntdll: Enable WoW64 filesystem redirection when loading libraries.
This matches the behavior seen on Windows 7/2008R2 and newer. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47912 Signed-off-by: Brendan Shanks <bshanks@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
a7269a1035
commit
aa51aee1a9
|
@ -3822,7 +3822,7 @@ static void test_wow64_redirection_for_dll(const char *libname)
|
|||
if (!GetModuleHandleA(libname))
|
||||
{
|
||||
lib = LoadLibraryExA(libname, NULL, 0);
|
||||
todo_wine ok (broken(lib == NULL) /* Vista/2008 */ ||
|
||||
ok (broken(lib == NULL) /* Vista/2008 */ ||
|
||||
lib != NULL, "Loading %s should succeed with WOW64 redirection disabled\n", libname);
|
||||
if (lib)
|
||||
{
|
||||
|
|
|
@ -2881,6 +2881,7 @@ static NTSTATUS find_dll_file( const WCHAR *load_path, const WCHAR *libname,
|
|||
{
|
||||
WCHAR *ext, *dllname;
|
||||
NTSTATUS status;
|
||||
ULONG wow64_old_value = 0;
|
||||
|
||||
/* first append .dll if needed */
|
||||
|
||||
|
@ -2897,6 +2898,9 @@ static NTSTATUS find_dll_file( const WCHAR *load_path, const WCHAR *libname,
|
|||
libname = dllname;
|
||||
}
|
||||
|
||||
/* Win 7/2008R2 and up seem to re-enable WoW64 FS redirection when loading libraries */
|
||||
if (is_wow64) RtlWow64EnableFsRedirectionEx( 0, &wow64_old_value );
|
||||
|
||||
nt_name->Buffer = NULL;
|
||||
|
||||
if (!contains_path( libname ))
|
||||
|
@ -2930,6 +2934,7 @@ static NTSTATUS find_dll_file( const WCHAR *load_path, const WCHAR *libname,
|
|||
|
||||
done:
|
||||
RtlFreeHeap( GetProcessHeap(), 0, dllname );
|
||||
if (wow64_old_value) RtlWow64EnableFsRedirectionEx( 1, &wow64_old_value );
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue