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