3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS system libraries
5 * FILE: lib/kernel32/synch/wait.c
6 * PURPOSE: Wait functions
7 * PROGRAMMER: Ariadne ( ariadne@xs4all.nl)
12 /* INCLUDES *****************************************************************/
14 #include <ddk/ntddk.h>
15 #include <kernel32/error.h>
20 #include <kernel32/kernel32.h>
22 /* FUNCTIONS ****************************************************************/
25 WaitForSingleObject(HANDLE hHandle,
28 return WaitForSingleObjectEx(hHandle,
35 WaitForSingleObjectEx(HANDLE hHandle,
40 PLARGE_INTEGER TimePtr;
43 if (dwMilliseconds == INFINITE)
49 Time.QuadPart = -10000 * dwMilliseconds;
53 errCode = NtWaitForSingleObject(hHandle,
56 if (errCode == STATUS_TIMEOUT)
60 else if ((errCode == WAIT_OBJECT_0) ||
61 (errCode == WAIT_ABANDONED_0))
66 SetLastErrorByStatus (errCode);
73 WaitForMultipleObjects(DWORD nCount,
74 CONST HANDLE *lpHandles,
78 return WaitForMultipleObjectsEx(nCount,
80 bWaitAll ? WaitAll : WaitAny,
87 WaitForMultipleObjectsEx(DWORD nCount,
88 CONST HANDLE *lpHandles,
95 PLARGE_INTEGER TimePtr;
97 DPRINT("nCount %lu\n", nCount);
99 if (dwMilliseconds == INFINITE)
105 Time.QuadPart = -10000 * dwMilliseconds;
109 errCode = NtWaitForMultipleObjects (nCount,
115 if (errCode == STATUS_TIMEOUT)
119 else if (((errCode >= WAIT_OBJECT_0) &&
120 (errCode <= WAIT_OBJECT_0 + nCount - 1)) ||
121 ((errCode >= WAIT_ABANDONED_0) &&
122 (errCode <= WAIT_ABANDONED_0 + nCount - 1)))
127 DPRINT("errCode %lx\n", errCode);
128 SetLastErrorByStatus (errCode);
135 SignalObjectAndWait(HANDLE hObjectToSignal,
136 HANDLE hObjectToWaitOn,
137 DWORD dwMilliseconds,