Alexandre Julliard : kernel32: Forward the Wow64 redirection functions to ntdll.
Alexandre Julliard
julliard at winehq.org
Mon Jul 6 09:34:00 CDT 2009
Module: wine
Branch: master
Commit: 26caf2fdda95f1934e329aa27f4d681d09390ebe
URL: http://source.winehq.org/git/wine.git/?a=commit;h=26caf2fdda95f1934e329aa27f4d681d09390ebe
Author: Alexandre Julliard <julliard at 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);
More information about the wine-cvs
mailing list