From 0d2ea2a91c6b8f0f9f8e9347bccbed8fc3f1e125 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Mon, 27 Jun 2005 12:03:56 +0000 Subject: [PATCH] Implemented OpenThread on top of NtOpenThread. --- dlls/kernel/thread.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/dlls/kernel/thread.c b/dlls/kernel/thread.c index be876687a8..5ddbb3378f 100644 --- a/dlls/kernel/thread.c +++ b/dlls/kernel/thread.c @@ -200,16 +200,27 @@ HANDLE WINAPI CreateRemoteThread( HANDLE hProcess, SECURITY_ATTRIBUTES *sa, SIZE */ HANDLE WINAPI OpenThread( DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwThreadId ) { - HANDLE ret = 0; - SERVER_START_REQ( open_thread ) + NTSTATUS status; + HANDLE handle; + OBJECT_ATTRIBUTES attr; + CLIENT_ID cid; + + attr.Length = sizeof(attr); + attr.RootDirectory = 0; + attr.Attributes = bInheritHandle ? OBJ_INHERIT : 0; + attr.ObjectName = NULL; + attr.SecurityDescriptor = NULL; + attr.SecurityQualityOfService = NULL; + + cid.UniqueProcess = 0; /* FIXME */ + cid.UniqueThread = (HANDLE)dwThreadId; + status = NtOpenThread( &handle, dwDesiredAccess, &attr, &cid ); + if (status) { - req->tid = dwThreadId; - req->access = dwDesiredAccess; - req->inherit = bInheritHandle; - if (!wine_server_call_err( req )) ret = reply->handle; + SetLastError( RtlNtStatusToDosError(status) ); + handle = 0; } - SERVER_END_REQ; - return ret; + return handle; }