Jacek Caban : ntoskrnl.exe: Implement PsGetThreadId.

Alexandre Julliard julliard at winehq.org
Mon Apr 29 16:08:50 CDT 2019


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Apr 29 16:01:45 2019 +0200

ntoskrnl.exe: Implement PsGetThreadId.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

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

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 9d78fa7..9d75223 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -2598,6 +2598,14 @@ NTSTATUS WINAPI PsLookupThreadByThreadId( HANDLE threadid, PETHREAD *thread )
     return status;
 }
 
+/*********************************************************************
+ *           PsGetThreadId    (NTOSKRNL.@)
+ */
+HANDLE WINAPI PsGetThreadId(PETHREAD thread)
+{
+    TRACE( "%p -> %p\n", thread, thread->kthread.id.UniqueThread );
+    return thread->kthread.id.UniqueThread;
+}
 
 /***********************************************************************
  *           KeInsertQueue   (NTOSKRNL.EXE.@)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 26d7570..53070f3 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -898,7 +898,7 @@
 @ stdcall -arch=x86_64 PsGetProcessWow64Process(ptr)
 @ stub PsGetThreadFreezeCount
 @ stub PsGetThreadHardErrorsAreDisabled
-@ stub PsGetThreadId
+@ stdcall PsGetThreadId(ptr)
 @ stub PsGetThreadProcess
 @ stub PsGetThreadProcessId
 @ stub PsGetThreadSessionId
diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c
index 0fe7ad3..4bbaa79 100644
--- a/dlls/ntoskrnl.exe/tests/driver.c
+++ b/dlls/ntoskrnl.exe/tests/driver.c
@@ -340,6 +340,7 @@ static void test_currentprocess(void)
     ret = wait_single( thread, 0 );
     ok(ret == STATUS_TIMEOUT, "got %#x\n", ret);
 
+    ok(PsGetThreadId((PETHREAD)KeGetCurrentThread()) == PsGetCurrentThreadId(), "thread IDs don't match\n");
     ok(!PsIsSystemThread((PETHREAD)KeGetCurrentThread()), "unexpected system thread\n");
 }
 
diff --git a/include/ddk/ntddk.h b/include/ddk/ntddk.h
index 68599bf..c9254d2 100644
--- a/include/ddk/ntddk.h
+++ b/include/ddk/ntddk.h
@@ -217,6 +217,7 @@ NTSTATUS  WINAPI KeExpandKernelStackAndCallout(PEXPAND_STACK_CALLOUT,void*,SIZE_
 void      WINAPI KeSetTargetProcessorDpc(PRKDPC,CCHAR);
 BOOLEAN   WINAPI MmIsAddressValid(void *);
 HANDLE    WINAPI PsGetProcessId(PEPROCESS);
+HANDLE    WINAPI PsGetThreadId(PETHREAD);
 NTSTATUS  WINAPI PsSetLoadImageNotifyRoutine(PLOAD_IMAGE_NOTIFY_ROUTINE);
 void      WINAPI RtlInitializeGenericTableAvl(PRTL_AVL_TABLE,PRTL_AVL_COMPARE_ROUTINE,PRTL_AVL_ALLOCATE_ROUTINE, PRTL_AVL_FREE_ROUTINE,void *);
 void      WINAPI RtlInsertElementGenericTableAvl(PRTL_AVL_TABLE,void *,ULONG,BOOL*);




More information about the wine-cvs mailing list