This function returns either when one or all of the specified objects are in the signaled state, or when the specified time-out interval elapses. It links multiple wait nodes to the current thread and specified synchronization objects, and blocks on the synchronization objects if necessary. Uses EAX, ECX, EDX, and Flags.
ECX
Number of objects in the wait array.
ESI
Pointer to array of VxD handles which can be waited on. A VxD handle is a ring 0 event handle created by the function OpenVxDHandle.
EDX
The time-out interval, in milliseconds. The function returns if the interval elapses, even if the wait conditions specified in the AX register are not satisfied. If zero, the function tests the states of the specified objects and returns immediately. If -1, the function's time-out interval never elapses.
AH
Wait Flags. If -1, the function returns when all objects in the wait array are signaled. If 0, the function returns when any one of the objects is signaled. In the latter case, the return value indicates the object whose state caused the function to return.
AL
If non-zero value, the function returns when APCs are queued. The calling thread will deliver the APC by using SleepEx, WaitForMultipleObjectsEx, or WaitForSingleObjectEx at ring 3.
This service can only be called when the current VM is the system VM.