Module: wine Branch: master Commit: 2f7e7863e0e0866495364da6cd4582f374f59e88 URL: https://source.winehq.org/git/wine.git/?a=commit;h=2f7e7863e0e0866495364da6c...
Author: Jacek Caban jacek@codeweavers.com Date: Tue May 21 12:11:44 2019 +0200
ntoskrnl.exe: Implement PsGetThreadProcessId.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntoskrnl.exe/ntoskrnl.c | 9 +++++++++ dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- dlls/ntoskrnl.exe/tests/driver.c | 1 + include/ddk/ntddk.h | 1 + 4 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 89f7674..dbadacc 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -2688,6 +2688,15 @@ HANDLE WINAPI PsGetThreadId(PETHREAD thread) return thread->kthread.id.UniqueThread; }
+/********************************************************************* + * PsGetThreadProcessId (NTOSKRNL.@) + */ +HANDLE WINAPI PsGetThreadProcessId( PETHREAD thread ) +{ + TRACE( "%p -> %p\n", thread, thread->kthread.id.UniqueProcess ); + return thread->kthread.id.UniqueProcess; +} + /*********************************************************************** * KeInsertQueue (NTOSKRNL.EXE.@) */ diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index 0105afb..202e919 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -902,7 +902,7 @@ @ stub PsGetThreadHardErrorsAreDisabled @ stdcall PsGetThreadId(ptr) @ stub PsGetThreadProcess -@ stub PsGetThreadProcessId +@ stdcall PsGetThreadProcessId(ptr) @ stub PsGetThreadSessionId @ stub PsGetThreadTeb @ stub PsGetThreadWin32Thread diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c index 1ad468e..688c608 100644 --- a/dlls/ntoskrnl.exe/tests/driver.c +++ b/dlls/ntoskrnl.exe/tests/driver.c @@ -346,6 +346,7 @@ static void test_current_thread(BOOL is_system) ok(current != *pPsInitialSystemProcess, "current == PsInitialSystemProcess\n");
ok(PsGetProcessId(current) == PsGetCurrentProcessId(), "process IDs don't match\n"); + ok(PsGetThreadProcessId((PETHREAD)KeGetCurrentThread()) == PsGetCurrentProcessId(), "process IDs don't match\n");
thread = PsGetCurrentThread(); ret = wait_single( thread, 0 ); diff --git a/include/ddk/ntddk.h b/include/ddk/ntddk.h index 74df919..d6ecbae 100644 --- a/include/ddk/ntddk.h +++ b/include/ddk/ntddk.h @@ -221,6 +221,7 @@ void WINAPI KeSetTargetProcessorDpc(PRKDPC,CCHAR); BOOLEAN WINAPI MmIsAddressValid(void *); HANDLE WINAPI PsGetProcessId(PEPROCESS); HANDLE WINAPI PsGetThreadId(PETHREAD); +HANDLE WINAPI PsGetThreadProcessId(PETHREAD); NTSTATUS WINAPI PsSetCreateProcessNotifyRoutine(PCREATE_PROCESS_NOTIFY_ROUTINE,BOOLEAN); NTSTATUS WINAPI PsSetCreateProcessNotifyRoutineEx(PCREATE_PROCESS_NOTIFY_ROUTINE_EX,BOOLEAN); NTSTATUS WINAPI PsSetCreateThreadNotifyRoutine(PCREATE_THREAD_NOTIFY_ROUTINE);