Implemented OpenProcess on top of NtOpenProcess.
diff --git a/dlls/kernel/process.c b/dlls/kernel/process.c
index c44a343..739fadb 100644
--- a/dlls/kernel/process.c
+++ b/dlls/kernel/process.c
@@ -2468,16 +2468,28 @@
*/
HANDLE WINAPI OpenProcess( DWORD access, BOOL inherit, DWORD id )
{
- HANDLE ret = 0;
- SERVER_START_REQ( open_process )
+ NTSTATUS status;
+ HANDLE handle;
+ OBJECT_ATTRIBUTES attr;
+ CLIENT_ID cid;
+
+ cid.UniqueProcess = (HANDLE)id;
+ cid.UniqueThread = 0; /* FIXME ? */
+
+ attr.Length = sizeof(OBJECT_ATTRIBUTES);
+ attr.RootDirectory = NULL;
+ attr.Attributes = inherit ? OBJ_INHERIT : 0;
+ attr.SecurityDescriptor = NULL;
+ attr.SecurityQualityOfService = NULL;
+ attr.ObjectName = NULL;
+
+ status = NtOpenProcess(&handle, access, &attr, &cid);
+ if (status != STATUS_SUCCESS)
{
- req->pid = id;
- req->access = access;
- req->inherit = inherit;
- if (!wine_server_call_err( req )) ret = reply->handle;
+ SetLastError( RtlNtStatusToDosError(status) );
+ return NULL;
}
- SERVER_END_REQ;
- return ret;
+ return handle;
}