Nikolay Sivov : kernel32: Forward ZombifyActCtx() to ntdll.

Alexandre Julliard julliard at winehq.org
Tue Sep 3 13:38:03 CDT 2013


Module: wine
Branch: master
Commit: 045682a4da707a1a93766221a223466388a52e36
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=045682a4da707a1a93766221a223466388a52e36

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Sep  2 14:30:50 2013 +0400

kernel32: Forward ZombifyActCtx() to ntdll.

---

 dlls/kernel32/actctx.c |   17 +++++++++--------
 dlls/ntdll/actctx.c    |   10 ++++++++++
 dlls/ntdll/ntdll.spec  |    2 +-
 include/winternl.h     |    1 +
 4 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/dlls/kernel32/actctx.c b/dlls/kernel32/actctx.c
index 86752b3..bcf95ec 100644
--- a/dlls/kernel32/actctx.c
+++ b/dlls/kernel32/actctx.c
@@ -33,9 +33,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(actctx);
 
-
-#define ACTCTX_FAKE_HANDLE ((HANDLE) 0xf00baa)
-
 /***********************************************************************
  * CreateActCtxA (KERNEL32.@)
  *
@@ -200,14 +197,18 @@ void WINAPI ReleaseActCtx(HANDLE hActCtx)
 /***********************************************************************
  * ZombifyActCtx (KERNEL32.@)
  *
- * Release a reference to an activation context.
+ * Deactivate context without releasing it.
  */
 BOOL WINAPI ZombifyActCtx(HANDLE hActCtx)
 {
-  FIXME("%p\n", hActCtx);
-  if (hActCtx != ACTCTX_FAKE_HANDLE)
-    return FALSE;
-  return TRUE;
+    NTSTATUS status;
+
+    if ((status = RtlZombifyActivationContext(hActCtx)))
+    {
+        SetLastError(RtlNtStatusToDosError(status));
+        return FALSE;
+    }
+    return TRUE;
 }
 
 /***********************************************************************
diff --git a/dlls/ntdll/actctx.c b/dlls/ntdll/actctx.c
index 369e928..f652c18 100644
--- a/dlls/ntdll/actctx.c
+++ b/dlls/ntdll/actctx.c
@@ -4138,6 +4138,16 @@ void WINAPI RtlReleaseActivationContext( HANDLE handle )
     if ((actctx = check_actctx( handle ))) actctx_release( actctx );
 }
 
+/******************************************************************
+ *              RtlZombifyActivationContext (NTDLL.@)
+ *
+ * FIXME: function prototype might be wrong
+ */
+NTSTATUS WINAPI RtlZombifyActivationContext( HANDLE handle )
+{
+    FIXME("%p: stub\n", handle);
+    return STATUS_NOT_IMPLEMENTED;
+}
 
 /******************************************************************
  *		RtlActivateActivationContext (NTDLL.@)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index dbef513..cb120da 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -934,7 +934,7 @@
 @ stdcall RtlWriteRegistryValue(long ptr ptr long ptr long)
 @ stub RtlZeroHeap
 @ stdcall RtlZeroMemory(ptr long)
-# @ stub RtlZombifyActivationContext
+@ stdcall RtlZombifyActivationContext(ptr)
 # @ stub RtlpApplyLengthFunction
 # @ stub RtlpEnsureBufferSize
 # @ stub RtlpNotOwnerCriticalSection
diff --git a/include/winternl.h b/include/winternl.h
index 41ba0a0..bb7a381 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2540,6 +2540,7 @@ NTSYSAPI NTSTATUS  WINAPI RtlWalkHeap(HANDLE,PVOID);
 NTSYSAPI NTSTATUS  WINAPI RtlWow64EnableFsRedirection(BOOLEAN);
 NTSYSAPI NTSTATUS  WINAPI RtlWow64EnableFsRedirectionEx(ULONG,ULONG*);
 NTSYSAPI NTSTATUS  WINAPI RtlWriteRegistryValue(ULONG,PCWSTR,PCWSTR,ULONG,PVOID,ULONG);
+NTSYSAPI NTSTATUS  WINAPI RtlZombifyActivationContext(HANDLE);
 NTSYSAPI NTSTATUS  WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
 NTSYSAPI NTSTATUS  WINAPI RtlpNtEnumerateSubKey(HANDLE,UNICODE_STRING *, ULONG);
 NTSYSAPI NTSTATUS  WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);




More information about the wine-cvs mailing list