DosWaitThread

Places the current thread into a wait state until another thread in the current process has ended. It then returns the thread identifier of the ending thread.

Syntax
DosWaitThread(ptid, option)

Parameters

 * ptid (PTID) - in/out : Address of the thread identification.
 * Input: The address of the ThreadID of the thread of interest. If ptid is 0, the current thread waits until the next thread in the process has ended. If ptid is nonzero, the current thread waits until the indicated thread has ended.
 * Output: The ThreadID of the ended thread is returned in this field.


 * option (ULONG) - input : An indicator that specifies whether to return if no thread has ended.
 * The values of this field are shown in the following list:
 * 0 DCWW_WAIT
 * The current thread waits until a thread ends. If a thread has already ended, the call returns immediately with the ptid.
 * 1 DCWW_NOWAIT
 * The current thread does not wait if no threads have ended.

Return Code

 * ulrc (APIRET) - returns:DosWaitThread returns one of the following values:
 * 0 NO_ERROR
 * 95 ERROR_INTERRUPT
 * 294 ERROR_THREAD_NOT_TERMINATED
 * 309 ERROR_INVALID_THREADID

Remarks
DosWaitThread is used to wait for termination of threads within a process. It is usually used so that thread resources (for example, the stack) can be recovered when a thread ends. DosWaitThread waits on any thread within the current process, or on a specific thread within the process, based on the ptid parameter's contents. option allows the caller the option of waiting until a thread ends, or getting immediate return and status. If no thread has ended and the DCWW_NOWAIT option is specified, the ptid field is preserved.

If DosWaitThread is called with the input ptid set to the current thread (the thread attempts to wait on its own termination), the ERROR_INVALID_THREADID error code is returned. ERROR_INVALID_THREADID is also returned if a caller attempts to wait on the termination of the thread with a ptid of 1.

Related Functions

 * DosCreateThread
 * DosKillThread
 * DosWaitChild