Since some people have different interpretation of the documentation, I'm trying to clarify once and for all the return value of WaitForMultipleObjects when
bWaitAll = TRUE
.- all handles were signaled
Based on the documnation:
Return value
WAIT_OBJECT_0 to (WAIT_OBJECT_0 + nCount– 1)
If bWaitAll is TRUE, the return value indicates that the state of all specified objects is signaled.
Question
Say I have passed 5 handles to this function and all of them were signaled, is the return value WAIT_OBJECT_0
?
Note
I'm trying to verify programmatically that WaitForMultipleObjects
succeeded.
DWORD dwWaitForMultipleObjectsRes = WaitForMultipleObjects(dwOpenProcessCount, handles, TRUE, m_dwWaitTimeForProcToBeKilled);
if (dwWaitForMultipleObjectsRes != WAIT_OBJECT_0)
// failed?
I want to verify the condition correctness.
The documentation is fairly clear that a return code from WAIT_OBJECT_0 through to WAIT_OBJECT_0 + nCount - 1 will be returned if the wait is satisfied:
It doesn't specify the exact value, so no one can say for sure what it will be other than it will be within that range.
So instead of testing
if (dwWaitForMultipleObjectsRes == WAIT_OBJECT_0)
, you should test: