Module: wine Branch: master Commit: 26caf2fdda95f1934e329aa27f4d681d09390ebe URL: http://source.winehq.org/git/wine.git/?a=commit;h=26caf2fdda95f1934e329aa27f...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Jul 6 15:09:29 2009 +0200
kernel32: Forward the Wow64 redirection functions to ntdll.
---
dlls/kernel32/kernel32.spec | 1 + dlls/kernel32/path.c | 25 +++++++++++++++++++------ include/winbase.h | 3 +++ 3 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index 5182e71..fc3b6ae 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -1144,6 +1144,7 @@ @ stdcall WaitNamedPipeW (wstr long) @ stdcall WideCharToMultiByte(long long wstr long ptr long ptr ptr) @ stdcall WinExec(str long) +@ stdcall Wow64EnableWow64FsRedirection(long) @ stdcall Wow64DisableWow64FsRedirection(ptr) @ stdcall Wow64RevertWow64FsRedirection(ptr) @ stdcall WriteConsoleA(long ptr long ptr ptr) diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c index 2633d90..0b3a87e 100644 --- a/dlls/kernel32/path.c +++ b/dlls/kernel32/path.c @@ -1539,24 +1539,37 @@ UINT WINAPI GetSystemWow64DirectoryA( LPSTR lpBuffer, UINT uSize ) return 0; }
+ +/*********************************************************************** + * Wow64EnableWow64FsRedirection (KERNEL32.@) + */ +BOOLEAN WINAPI Wow64EnableWow64FsRedirection( BOOLEAN enable ) +{ + NTSTATUS status = RtlWow64EnableFsRedirection( enable ); + if (status) SetLastError( RtlNtStatusToDosError(status) ); + return !status; +} + + /*********************************************************************** * Wow64DisableWow64FsRedirection (KERNEL32.@) */ BOOL WINAPI Wow64DisableWow64FsRedirection( PVOID *old_value ) { - FIXME("%p\n", old_value); - - if (old_value) *old_value = (void *)0xdeadbeef; - return TRUE; + NTSTATUS status = RtlWow64EnableFsRedirectionEx( TRUE, (ULONG *)old_value ); + if (status) SetLastError( RtlNtStatusToDosError(status) ); + return !status; }
+ /*********************************************************************** * Wow64RevertWow64FsRedirection (KERNEL32.@) */ BOOL WINAPI Wow64RevertWow64FsRedirection( PVOID old_value ) { - FIXME("%p\n", old_value); - return TRUE; + NTSTATUS status = RtlWow64EnableFsRedirection( (UINT_PTR)old_value ); + if (status) SetLastError( RtlNtStatusToDosError(status) ); + return !status; }
diff --git a/include/winbase.h b/include/winbase.h index 0794fc6..a7eaf9d 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -2143,6 +2143,9 @@ WINBASEAPI BOOL WINAPI WaitNamedPipeA(LPCSTR,DWORD); WINBASEAPI BOOL WINAPI WaitNamedPipeW(LPCWSTR,DWORD); #define WaitNamedPipe WINELIB_NAME_AW(WaitNamedPipe) WINBASEAPI UINT WINAPI WinExec(LPCSTR,UINT); +WINBASEAPI BOOL WINAPI Wow64DisableWow64FsRedirection(PVOID*); +WINBASEAPI BOOLEAN WINAPI Wow64EnableWow64FsRedirection(BOOLEAN); +WINBASEAPI BOOL WINAPI Wow64RevertWow64FsRedirection(PVOID); WINBASEAPI BOOL WINAPI WriteFile(HANDLE,LPCVOID,DWORD,LPDWORD,LPOVERLAPPED); WINBASEAPI BOOL WINAPI WriteFileEx(HANDLE,LPCVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE); WINBASEAPI BOOL WINAPI WriteFileGather(HANDLE,FILE_SEGMENT_ELEMENT*,DWORD,LPDWORD,LPOVERLAPPED);