[PATCH 2/2] ntoskrnl.exe: Implement PsIsProcessBeingDebugged.

Myah Caron qsniyg at protonmail.com
Fri Oct 9 05:04:33 CDT 2020


Signed-off-by: Myah Caron <qsniyg at protonmail.com>
---
Based on ReactOS's implementation (hence the first patch in this series).

 dlls/ntoskrnl.exe/ntoskrnl.c        | 10 ++++++++++
 dlls/ntoskrnl.exe/ntoskrnl.exe.spec |  2 +-
 dlls/ntoskrnl.exe/tests/driver.c    |  4 ++++
 include/ddk/wdm.h                   |  1 +
 4 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 177816a2239..aea80c77fcd 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -2962,6 +2962,16 @@ BOOLEAN WINAPI PsIsSystemThread(PETHREAD thread)
 }


+/***********************************************************************
+ *           PsIsProcessBeingDebugged   (NTOSKRNL.EXE.@)
+ */
+BOOLEAN WINAPI PsIsProcessBeingDebugged(PEPROCESS process)
+{
+    TRACE( "%p\n", process );
+    return !!PsGetProcessDebugPort( process );
+}
+
+
 /***********************************************************************
  *           PsGetVersion   (NTOSKRNL.EXE.@)
  */
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 8ca0f652f1d..6ada30e1f21 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -923,7 +923,7 @@
 @ stdcall PsGetVersion(ptr ptr ptr ptr)
 @ stdcall PsImpersonateClient(ptr ptr long long long)
 @ extern PsInitialSystemProcess
-@ stub PsIsProcessBeingDebugged
+@ stdcall PsIsProcessBeingDebugged(ptr)
 @ stdcall PsIsSystemThread(ptr)
 @ stub PsIsThreadImpersonating
 @ stub PsIsThreadTerminating
diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c
index e712ecf2f84..3d76bdf6856 100644
--- a/dlls/ntoskrnl.exe/tests/driver.c
+++ b/dlls/ntoskrnl.exe/tests/driver.c
@@ -2106,9 +2106,13 @@ static void test_permanence(void)
 static void test_debug(void)
 {
     PVOID debug_port;
+    BOOLEAN is_debugged;

     debug_port = PsGetProcessDebugPort( PsGetCurrentProcess() );
     ok(!debug_port, "got %p\n", debug_port);
+
+    is_debugged = PsIsProcessBeingDebugged( PsGetCurrentProcess() );
+    ok(!is_debugged, "got %d\n", is_debugged);
 }

 static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *stack)
diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h
index 40f1d9754c0..8c639b50320 100644
--- a/include/ddk/wdm.h
+++ b/include/ddk/wdm.h
@@ -1835,6 +1835,7 @@ HANDLE    WINAPI PsGetCurrentThreadId(void);
 HANDLE    WINAPI PsGetProcessInheritedFromUniqueProcessId(PEPROCESS);
 BOOLEAN   WINAPI PsGetVersion(ULONG*,ULONG*,ULONG*,UNICODE_STRING*);
 PVOID     WINAPI PsGetProcessDebugPort(PEPROCESS process);
+BOOLEAN   WINAPI PsIsProcessBeingDebugged(PEPROCESS process);
 NTSTATUS  WINAPI PsTerminateSystemThread(NTSTATUS);

 #if defined(__x86_64__) || defined(__i386__)
--
2.28.0





More information about the wine-devel mailing list