I've had to split up the 4th patch because my mail server wouldn't send a 20k message (weird), so I'm just resending the whole set in hopes to avoid confusion.
This revision fixes the problem with an incorrect return value in WaitForMultipleObjects(Ex) when bWaitAll = FALSE, where I was returning STATUS_SUCCESS instead of WAIT_OBJECT_0 + index of object that was signalled like you're supposed to. This also corrects failed threadpool tests (and they run fast now! :)
Daniel