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