Implemented OpenThread on top of NtOpenThread.

This commit is contained in:
Eric Pouech 2005-06-27 12:03:56 +00:00 committed by Alexandre Julliard
parent 803c8d9693
commit 0d2ea2a91c
1 changed files with 19 additions and 8 deletions

View File

@ -200,16 +200,27 @@ HANDLE WINAPI CreateRemoteThread( HANDLE hProcess, SECURITY_ATTRIBUTES *sa, SIZE
*/ */
HANDLE WINAPI OpenThread( DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwThreadId ) HANDLE WINAPI OpenThread( DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwThreadId )
{ {
HANDLE ret = 0; NTSTATUS status;
SERVER_START_REQ( open_thread ) 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; SetLastError( RtlNtStatusToDosError(status) );
req->access = dwDesiredAccess; handle = 0;
req->inherit = bInheritHandle;
if (!wine_server_call_err( req )) ret = reply->handle;
} }
SERVER_END_REQ; return handle;
return ret;
} }