Alexandre Julliard : ntdll: Implement RtlWow64GetCurrentCpuArea().
Alexandre Julliard
julliard at winehq.org
Wed Jun 30 16:10:59 CDT 2021
Module: wine
Branch: master
Commit: 17716bc7f325e5f7606c74c0af8d425b98e60054
URL: https://source.winehq.org/git/wine.git/?a=commit;h=17716bc7f325e5f7606c74c0af8d425b98e60054
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Jun 30 11:16:01 2021 +0200
ntdll: Implement RtlWow64GetCurrentCpuArea().
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/ntdll.spec | 1 +
dlls/ntdll/process.c | 18 ++++++++++++++++++
include/winternl.h | 1 +
3 files changed, 20 insertions(+)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 0e1706f2dd2..42de54c895e 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1075,6 +1075,7 @@
@ stdcall RtlWow64EnableFsRedirection(long)
@ stdcall RtlWow64EnableFsRedirectionEx(long ptr)
@ stdcall -arch=win64 RtlWow64GetCpuAreaInfo(ptr long ptr)
+@ stdcall -arch=win64 RtlWow64GetCurrentCpuArea(ptr ptr ptr)
@ stdcall RtlWow64GetCurrentMachine()
@ stdcall RtlWow64GetProcessMachines(long ptr ptr)
@ stdcall -arch=win64 RtlWow64GetThreadContext(long ptr)
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
index 3ed31e22100..e8b7785ce31 100644
--- a/dlls/ntdll/process.c
+++ b/dlls/ntdll/process.c
@@ -143,6 +143,24 @@ NTSTATUS WINAPI RtlWow64GetCpuAreaInfo( WOW64_CPURESERVED *cpu, ULONG reserved,
}
+/**********************************************************************
+ * RtlWow64GetCurrentCpuArea (NTDLL.@)
+ */
+NTSTATUS WINAPI RtlWow64GetCurrentCpuArea( USHORT *machine, void **context, void **context_ex )
+{
+ WOW64_CPU_AREA_INFO info;
+ NTSTATUS status;
+
+ if (!(status = RtlWow64GetCpuAreaInfo( NtCurrentTeb()->TlsSlots[WOW64_TLS_CPURESERVED], 0, &info )))
+ {
+ if (machine) *machine = info.Machine;
+ if (context) *context = info.Context;
+ if (context_ex) *context_ex = *(void **)info.ContextEx;
+ }
+ return status;
+}
+
+
/******************************************************************************
* RtlWow64GetThreadContext (NTDLL.@)
*/
diff --git a/include/winternl.h b/include/winternl.h
index 71be1f5816d..b07a5465d86 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -4404,6 +4404,7 @@ NTSYSAPI int __cdecl _strnicmp(LPCSTR,LPCSTR,size_t);
#ifdef _WIN64
NTSYSAPI NTSTATUS WINAPI RtlWow64GetCpuAreaInfo(WOW64_CPURESERVED*,ULONG,WOW64_CPU_AREA_INFO*);
+NTSYSAPI NTSTATUS WINAPI RtlWow64GetCurrentCpuArea(USHORT*,void**,void**);
NTSYSAPI NTSTATUS WINAPI RtlWow64GetThreadContext(HANDLE,WOW64_CONTEXT*);
NTSYSAPI NTSTATUS WINAPI RtlWow64SetThreadContext(HANDLE,const WOW64_CONTEXT*);
#else
More information about the wine-cvs
mailing list