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