Implemented OpenThread on top of NtOpenThread.
This commit is contained in:
parent
803c8d9693
commit
0d2ea2a91c
|
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue