Nikolay Sivov : kernel32: Implement GetProcessIdOfThread().

Alexandre Julliard julliard at wine.codeweavers.com
Fri Mar 20 08:43:20 CDT 2015


Module: wine
Branch: master
Commit: 85a3d093290314315386d901cf4a7eb8238fd457
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=85a3d093290314315386d901cf4a7eb8238fd457

Author: Nikolay Sivov <nsivov at 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




More information about the wine-cvs mailing list