Module: wine Branch: master Commit: 82860424bf52bb3dc7b4bd04fcd751466d40e912 URL: https://source.winehq.org/git/wine.git/?a=commit;h=82860424bf52bb3dc7b4bd04f...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Apr 29 16:01:45 2019 +0200
ntoskrnl.exe: Implement PsGetThreadId.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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*);