Alexandre Julliard : ntdll: Implement RtlActivateActivationContextEx().

Alexandre Julliard julliard at winehq.org
Mon Jul 13 16:08:50 CDT 2020


Module: wine
Branch: master
Commit: c71da19d24a5d6f01e65b3b3691a9d7dd17a2278
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=c71da19d24a5d6f01e65b3b3691a9d7dd17a2278

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Jul 13 18:37:29 2020 +0200

ntdll: Implement RtlActivateActivationContextEx().

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/actctx.c   | 13 +++++++++++--
 dlls/ntdll/ntdll.spec |  2 +-
 include/winternl.h    |  1 +
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/dlls/ntdll/actctx.c b/dlls/ntdll/actctx.c
index f64cb31a1f..625cffcca8 100644
--- a/dlls/ntdll/actctx.c
+++ b/dlls/ntdll/actctx.c
@@ -5156,16 +5156,25 @@ NTSTATUS WINAPI RtlZombifyActivationContext( HANDLE handle )
  *		RtlActivateActivationContext (NTDLL.@)
  */
 NTSTATUS WINAPI RtlActivateActivationContext( ULONG unknown, HANDLE handle, PULONG_PTR cookie )
+{
+    return RtlActivateActivationContextEx( 0, NtCurrentTeb(), handle, cookie );
+}
+
+
+/******************************************************************
+ *		RtlActivateActivationContextEx (NTDLL.@)
+ */
+NTSTATUS WINAPI RtlActivateActivationContextEx( ULONG flags, TEB *teb, HANDLE handle, ULONG_PTR *cookie )
 {
     RTL_ACTIVATION_CONTEXT_STACK_FRAME *frame;
 
     if (!(frame = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(*frame) )))
         return STATUS_NO_MEMORY;
 
-    frame->Previous = NtCurrentTeb()->ActivationContextStack.ActiveFrame;
+    frame->Previous = teb->ActivationContextStack.ActiveFrame;
     frame->ActivationContext = handle;
     frame->Flags = 0;
-    NtCurrentTeb()->ActivationContextStack.ActiveFrame = frame;
+    teb->ActivationContextStack.ActiveFrame = frame;
     RtlAddRefActivationContext( handle );
 
     *cookie = (ULONG_PTR)frame;
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index bd41da37af..7e2b6dd12f 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -446,7 +446,7 @@
 @ stdcall RtlAcquireSRWLockExclusive(ptr)
 @ stdcall RtlAcquireSRWLockShared(ptr)
 @ stdcall RtlActivateActivationContext(long ptr ptr)
-@ stub RtlActivateActivationContextEx
+@ stdcall RtlActivateActivationContextEx(long ptr ptr ptr)
 @ stub RtlActivateActivationContextUnsafeFast
 @ stdcall RtlAddAccessAllowedAce(ptr long long ptr)
 @ stdcall RtlAddAccessAllowedAceEx(ptr long long long ptr)
diff --git a/include/winternl.h b/include/winternl.h
index 10d109fede..b3fbb90fef 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2944,6 +2944,7 @@ NTSYSAPI BYTE      WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
 NTSYSAPI void      WINAPI RtlAcquireSRWLockExclusive(RTL_SRWLOCK*);
 NTSYSAPI void      WINAPI RtlAcquireSRWLockShared(RTL_SRWLOCK*);
 NTSYSAPI NTSTATUS  WINAPI RtlActivateActivationContext(DWORD,HANDLE,ULONG_PTR*);
+NTSYSAPI NTSTATUS  WINAPI RtlActivateActivationContextEx(ULONG,TEB*,HANDLE,ULONG_PTR*);
 NTSYSAPI NTSTATUS  WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
 NTSYSAPI NTSTATUS  WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
 NTSYSAPI NTSTATUS  WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);




More information about the wine-cvs mailing list