Если дескриптор сигнализируется, он никогда не переходит в состояние ожидания. И если параметр dwMilliseconds равен 0, он не войдет в состояние ожидания, даже если ему не было сообщено.
Относительно второго параметра: dwMilliseconds MSDN сообщает следующее :
...
если dwMilliseconds равен нулю,
функция не входит в ожидание
указать, если объект не сигнализируется;
всегда возвращается сразу ...