DosEnterCritSec
Bindings: C, MASM
This call disables thread switching for the current process.
DosEnterCritSec ( )
rc (USHORT) - return
Return code descriptions are:
0 NO_ERROR
484 ERROR_CRITSEC_OVERFLOW
Remarks
DosEnterCritSec causes other threads in the process to block themselves
and give up their time slice. After a DosEnterCritSec request is made, no
dynamic link calls should be made until the corresponding DosExitCritSec
call is completed.
If a signal occurs, thread 1 begins execution to process the signal even
though another thread in the process has a DosEnterCritSec active.
(Thread 1 of a process is its initial thread of execution, not a thread
created with the DosCreateThread call.) Any processing done by thread 1
to satisfy the signal must not include accessing the critical resource
intended to be protected by the DosEnterCritSec request.
A count is maintained of the number of times a DosEnterCritSec request is
made without a corresponding DosExitCritSec. The count is incremented by
DosEnterCritSec and decremented by DosExitCritSec. Normal thread
dispatching is not restored until the count is 0. The outstanding
DosEnterCritSec count is maintained in a word. If overflow occurs, the
count is set to the maximum value, no operation is performed, and the
request returns with an error.
A thread can also execute code without having to give up time slices to
other threads in its process if it requests a priority class that is
higher than those of the other threads. A thread's priority is examined
and changed with DosGetPrty and DosSetPrty.
Created using Inf-PHP v.2 (c) 2003 Yuri Prokushev
Created using Inf-HTML v.0.9b (c) 1995 Peter Childs