Module: wine Branch: master Commit: 85a3d093290314315386d901cf4a7eb8238fd457 URL: http://source.winehq.org/git/wine.git/?a=commit;h=85a3d093290314315386d901cf...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Fri Mar 20 12:45:33 2015 +0300
kernel32: Implement GetProcessIdOfThread().
---
.../api-ms-win-core-processthreads-l1-1-0.spec | 2 +- .../api-ms-win-core-processthreads-l1-1-1.spec | 2 +- .../api-ms-win-core-processthreads-l1-1-2.spec | 2 +- dlls/kernel32/kernel32.spec | 2 +- dlls/kernel32/thread.c | 29 ++++++++++++++++++++++ 5 files changed, 33 insertions(+), 4 deletions(-)
diff --git a/dlls/api-ms-win-core-processthreads-l1-1-0/api-ms-win-core-processthreads-l1-1-0.spec b/dlls/api-ms-win-core-processthreads-l1-1-0/api-ms-win-core-processthreads-l1-1-0.spec index 0b16649..80a4780 100644 --- a/dlls/api-ms-win-core-processthreads-l1-1-0/api-ms-win-core-processthreads-l1-1-0.spec +++ b/dlls/api-ms-win-core-processthreads-l1-1-0/api-ms-win-core-processthreads-l1-1-0.spec @@ -16,7 +16,7 @@ @ stdcall GetExitCodeThread(long ptr) kernel32.GetExitCodeThread @ stdcall GetPriorityClass(long) kernel32.GetPriorityClass @ stdcall GetProcessId(long) kernel32.GetProcessId -@ stub GetProcessIdOfThread +@ stdcall GetProcessIdOfThread(long) kernel32.GetProcessIdOfThread @ stdcall GetProcessTimes(long ptr ptr ptr ptr) kernel32.GetProcessTimes @ stdcall GetProcessVersion(long) kernel32.GetProcessVersion @ stdcall GetStartupInfoW(ptr) kernel32.GetStartupInfoW diff --git a/dlls/api-ms-win-core-processthreads-l1-1-1/api-ms-win-core-processthreads-l1-1-1.spec b/dlls/api-ms-win-core-processthreads-l1-1-1/api-ms-win-core-processthreads-l1-1-1.spec index c9054d20..adc7284 100644 --- a/dlls/api-ms-win-core-processthreads-l1-1-1/api-ms-win-core-processthreads-l1-1-1.spec +++ b/dlls/api-ms-win-core-processthreads-l1-1-1/api-ms-win-core-processthreads-l1-1-1.spec @@ -21,7 +21,7 @@ @ stdcall GetPriorityClass(long) kernel32.GetPriorityClass @ stdcall GetProcessHandleCount(long ptr) kernel32.GetProcessHandleCount @ stdcall GetProcessId(long) kernel32.GetProcessId -@ stub GetProcessIdOfThread +@ stdcall GetProcessIdOfThread(long) kernel32.GetProcessIdOfThread @ stub GetProcessMitigationPolicy @ stdcall GetProcessTimes(long ptr ptr ptr ptr) kernel32.GetProcessTimes @ stdcall GetProcessVersion(long) kernel32.GetProcessVersion diff --git a/dlls/api-ms-win-core-processthreads-l1-1-2/api-ms-win-core-processthreads-l1-1-2.spec b/dlls/api-ms-win-core-processthreads-l1-1-2/api-ms-win-core-processthreads-l1-1-2.spec index 6894ce8..830578f 100644 --- a/dlls/api-ms-win-core-processthreads-l1-1-2/api-ms-win-core-processthreads-l1-1-2.spec +++ b/dlls/api-ms-win-core-processthreads-l1-1-2/api-ms-win-core-processthreads-l1-1-2.spec @@ -21,7 +21,7 @@ @ stdcall GetPriorityClass(long) kernel32.GetPriorityClass @ stdcall GetProcessHandleCount(long ptr) kernel32.GetProcessHandleCount @ stdcall GetProcessId(long) kernel32.GetProcessId -@ stub GetProcessIdOfThread +@ stdcall GetProcessIdOfThread(long) kernel32.GetProcessIdOfThread @ stub GetProcessMitigationPolicy @ stdcall GetProcessPriorityBoost(long ptr) kernel32.GetProcessPriorityBoost @ stdcall GetProcessTimes(long ptr ptr ptr ptr) kernel32.GetProcessTimes diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index c95c446..1179af2 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -780,7 +780,7 @@ @ stdcall -norelay GetProcessHeap() @ stdcall GetProcessHeaps(long ptr) @ stdcall GetProcessId(long) -# @ stub GetProcessIdOfThread +@ stdcall GetProcessIdOfThread(long) @ stdcall GetProcessIoCounters(long ptr) # @ stub GetProcessPreferredUILanguages @ stdcall GetProcessPriorityBoost(long ptr) diff --git a/dlls/kernel32/thread.c b/dlls/kernel32/thread.c index 0abfdf1..3dabf94 100644 --- a/dlls/kernel32/thread.c +++ b/dlls/kernel32/thread.c @@ -557,6 +557,35 @@ DWORD WINAPI GetThreadId(HANDLE Thread) return HandleToULong(tbi.ClientId.UniqueThread); }
+/********************************************************************** + * GetProcessIdOfThread [KERNEL32.@] + * + * Retrieve process identifier given thread belongs to. + * + * PARAMS + * Thread [I] The thread identifier. + * + * RETURNS + * Success: Process identifier + * Failure: 0 + */ +DWORD WINAPI GetProcessIdOfThread(HANDLE Thread) +{ + THREAD_BASIC_INFORMATION tbi; + NTSTATUS status; + + TRACE("(%p)\n", Thread); + + status = NtQueryInformationThread(Thread, ThreadBasicInformation, &tbi, + sizeof(tbi), NULL); + if (status) + { + SetLastError( RtlNtStatusToDosError(status) ); + return 0; + } + + return HandleToULong(tbi.ClientId.UniqueProcess); +}
/*********************************************************************** * GetCurrentThread [KERNEL32.@] Gets pseudohandle for current thread