KERNEL32: implement SignalObjectAndWait
Mike McCormack
mike at codeweavers.com
Mon Apr 18 11:31:11 CDT 2005
ChangeLog:
* implement SignalObjectAndWait
-------------- next part --------------
Index: dlls/kernel/sync.c
===================================================================
RCS file: /home/wine/wine/dlls/kernel/sync.c,v
retrieving revision 1.76
diff -u -p -r1.76 sync.c
--- dlls/kernel/sync.c 18 Apr 2005 14:57:04 -0000 1.76
+++ dlls/kernel/sync.c 18 Apr 2005 16:31:17 -0000
@@ -284,12 +284,31 @@ BOOL WINAPI UnregisterWaitEx( HANDLE Wai
* Allows to atomically signal any of the synchro objects (semaphore,
* mutex, event) and wait on another.
*/
-DWORD WINAPI SignalObjectAndWait( HANDLE hObjectToSignal, HANDLE hObjectToWaitOn, DWORD dwMilliseconds, BOOL bAlertable )
+DWORD WINAPI SignalObjectAndWait( HANDLE hObjectToSignal,
+ HANDLE hObjectToWaitOn, DWORD dwMilliseconds, BOOL bAlertable )
{
- FIXME("(%p %p %ld %d): stub\n", hObjectToSignal, hObjectToWaitOn, dwMilliseconds, bAlertable);
- return WAIT_OBJECT_0;
-}
+ NTSTATUS status;
+ LARGE_INTEGER timeout, *ptimeout = NULL;
+
+ TRACE("%p %p %ld %d\n", hObjectToSignal,
+ hObjectToWaitOn, dwMilliseconds, bAlertable);
+ if (dwMilliseconds != INFINITE)
+ {
+ timeout.QuadPart = dwMilliseconds * (ULONGLONG)10000;
+ timeout.QuadPart = -timeout.QuadPart;
+ ptimeout = &timeout;
+ }
+
+ status = NtSignalAndWaitForSingleObject( hObjectToSignal, hObjectToWaitOn,
+ bAlertable, ptimeout );
+ if (HIWORD(status))
+ {
+ SetLastError( RtlNtStatusToDosError(status) );
+ status = WAIT_FAILED;
+ }
+ return status;
+}
/***********************************************************************
* InitializeCriticalSection (KERNEL32.@)
More information about the wine-patches
mailing list