Module: wine Branch: master Commit: 908850602916a786692f19b4d1617541ca37b58b URL: https://gitlab.winehq.org/wine/wine/-/commit/908850602916a786692f19b4d161754...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Feb 6 14:57:41 2024 +0100
kernel32: Move Wow64Get/SetThreadContext implementation to kernelbase.
---
dlls/kernel32/kernel32.spec | 4 ++-- dlls/kernel32/thread.c | 29 ----------------------------- dlls/kernelbase/kernelbase.spec | 3 +++ dlls/kernelbase/thread.c | 30 ++++++++++++++++++++++++++++++ 4 files changed, 35 insertions(+), 31 deletions(-)
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index bb9c8fbfe0e..52ff3a7fa38 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -1638,10 +1638,10 @@ @ stdcall WinExec(str long) @ stdcall -import Wow64DisableWow64FsRedirection(ptr) @ stdcall -import Wow64EnableWow64FsRedirection(long) -@ stdcall Wow64GetThreadContext(long ptr) +@ stdcall -import Wow64GetThreadContext(long ptr) @ stdcall Wow64GetThreadSelectorEntry(long long ptr) @ stdcall -import Wow64RevertWow64FsRedirection(ptr) -@ stdcall Wow64SetThreadContext(long ptr) +@ stdcall -import Wow64SetThreadContext(long ptr) # @ stub Wow64SuspendThread @ stdcall -import WriteConsoleA(long ptr long ptr ptr) @ stdcall -import WriteConsoleInputA(long ptr long ptr) diff --git a/dlls/kernel32/thread.c b/dlls/kernel32/thread.c index a090c54aa28..7f1a3f5b2fb 100644 --- a/dlls/kernel32/thread.c +++ b/dlls/kernel32/thread.c @@ -72,35 +72,6 @@ void WINAPI FreeLibraryAndExitThread(HINSTANCE hLibModule, DWORD dwExitCode) }
-/*********************************************************************** - * Wow64SetThreadContext [KERNEL32.@] - */ -BOOL WINAPI Wow64SetThreadContext( HANDLE handle, const WOW64_CONTEXT *context) -{ -#ifdef __i386__ - return set_ntstatus( NtSetContextThread( handle, (const CONTEXT *)context )); -#elif defined(__x86_64__) - return set_ntstatus( RtlWow64SetThreadContext( handle, context )); -#else - return set_ntstatus( STATUS_NOT_IMPLEMENTED ); -#endif -} - -/*********************************************************************** - * Wow64GetThreadContext [KERNEL32.@] - */ -BOOL WINAPI Wow64GetThreadContext( HANDLE handle, WOW64_CONTEXT *context) -{ -#ifdef __i386__ - return set_ntstatus( NtGetContextThread( handle, (CONTEXT *)context )); -#elif defined(__x86_64__) - return set_ntstatus( RtlWow64GetThreadContext( handle, context )); -#else - return set_ntstatus( STATUS_NOT_IMPLEMENTED ); -#endif -} - - /*********************************************************************** * Wow64GetThreadSelectorEntry [KERNEL32.@] */ diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index ffb153a46ee..d3bd59a78e3 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -1759,8 +1759,11 @@ @ stdcall WideCharToMultiByte(long long wstr long ptr long ptr ptr) @ stdcall Wow64DisableWow64FsRedirection(ptr) @ stdcall Wow64EnableWow64FsRedirection(long) kernelbase_Wow64EnableWow64FsRedirection +@ stdcall Wow64GetThreadContext(long ptr) @ stdcall Wow64RevertWow64FsRedirection(ptr) +@ stdcall Wow64SetThreadContext(long ptr) # @ stub Wow64SetThreadDefaultGuestMachine +# @ stub Wow64SuspendThread # @ stub -arch=i386 Wow64Transition @ stdcall WriteConsoleA(long ptr long ptr ptr) @ stdcall WriteConsoleInputA(long ptr long ptr) diff --git a/dlls/kernelbase/thread.c b/dlls/kernelbase/thread.c index 8867029a854..12e1777262a 100644 --- a/dlls/kernelbase/thread.c +++ b/dlls/kernelbase/thread.c @@ -762,6 +762,36 @@ BOOL WINAPI DECLSPEC_HOTPATCH TlsSetValue( DWORD index, LPVOID value ) }
+/*********************************************************************** + * Wow64GetThreadContext (kernelbase.@) + */ +BOOL WINAPI Wow64GetThreadContext( HANDLE handle, WOW64_CONTEXT *context) +{ +#ifdef __i386__ + return set_ntstatus( NtGetContextThread( handle, (CONTEXT *)context )); +#elif defined(__x86_64__) + return set_ntstatus( RtlWow64GetThreadContext( handle, context )); +#else + return set_ntstatus( STATUS_NOT_IMPLEMENTED ); +#endif +} + + +/*********************************************************************** + * Wow64SetThreadContext (kernelbase.@) + */ +BOOL WINAPI Wow64SetThreadContext( HANDLE handle, const WOW64_CONTEXT *context) +{ +#ifdef __i386__ + return set_ntstatus( NtSetContextThread( handle, (const CONTEXT *)context )); +#elif defined(__x86_64__) + return set_ntstatus( RtlWow64SetThreadContext( handle, context )); +#else + return set_ntstatus( STATUS_NOT_IMPLEMENTED ); +#endif +} + + /*********************************************************************** * Fibers ***********************************************************************/