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 *****************************************************************/
17 #include <kernel32/kernel32.h>
19 /* FUNCTIONS ****************************************************************/
22 WaitForSingleObject(HANDLE hHandle,
25 return WaitForSingleObjectEx(hHandle,
32 WaitForSingleObjectEx(HANDLE hHandle,
37 PLARGE_INTEGER TimePtr;
40 if (dwMilliseconds == INFINITE)
46 Time.QuadPart = -10000 * dwMilliseconds;
50 errCode = NtWaitForSingleObject(hHandle,
53 if (errCode == STATUS_TIMEOUT)
57 else if ((errCode == WAIT_OBJECT_0) ||
58 (errCode == WAIT_ABANDONED_0))
63 SetLastErrorByStatus (errCode);
70 WaitForMultipleObjects(DWORD nCount,
71 CONST HANDLE *lpHandles,
75 return WaitForMultipleObjectsEx(nCount,
77 bWaitAll ? WaitAll : WaitAny,
84 WaitForMultipleObjectsEx(DWORD nCount,
85 CONST HANDLE *lpHandles,
92 PLARGE_INTEGER TimePtr;
94 DPRINT("nCount %lu\n", nCount);
96 if (dwMilliseconds == INFINITE)
102 Time.QuadPart = -10000 * dwMilliseconds;
106 errCode = NtWaitForMultipleObjects (nCount,
112 if (errCode == STATUS_TIMEOUT)
116 else if (((errCode >= WAIT_OBJECT_0) &&
117 (errCode <= WAIT_OBJECT_0 + nCount - 1)) ||
118 ((errCode >= WAIT_ABANDONED_0) &&
119 (errCode <= WAIT_ABANDONED_0 + nCount - 1)))
124 DPRINT("errCode %lx\n", errCode);
125 SetLastErrorByStatus (errCode);
132 SignalObjectAndWait(HANDLE hObjectToSignal,
133 HANDLE hObjectToWaitOn,
134 DWORD dwMilliseconds,