DosTimerStop
This call stops a periodic interval timer started by DosTimerStart, or an asynchronous timer started by DosTimerAsync.
This function has been renamed to "DosStopTimer".
Syntax
DosTimerStop (Handle)
Parameters
- Handle (HTIMER) - input
- Handle of the timer to be stopped.
Return Code
rc (USHORT) - return
Return code descriptions are:
- 0 NO_ERROR
- 326 ERROR_TS_HANDLE
Remarks
DosTimerStop is used to stop an asynchronous one-shot timer started with DosTimerAsync or an asynchronous periodic interval timer started with DosTimerStart.
No assumptions can be made about the state of the semaphore specified with DosTimerStart or DosTimerAsync. The application should put the semaphores into a known state.
Example Code
C Binding
#define INCL_DOSDATETIME USHORT rc = DosTimerStop(Handle); HTIMER Handle; /* Handle of the timer */ USHORT rc; /* return code */
The following example sets an asynchronous one-shot timer for one second. It then sets an asynchronous recurring timer with a one-second interval, reporting each time an interval elapses. Finally, it stops the recurring timer.
#define INCL_DOSDATETIME #define INCL_DOSSEMAPHORES #include <os2.h> #define SEM_NAME "\\SEM\\timer.sem" /* Semaphore name */ #define TIME_INTERVAL 1000L /* Timer interval (in milliseconds) */ main() { HSEM SemHandle; HTIMER TimerHandle; USHORT i; USHORT rc; /* Create system semaphore to be used by timers */ DosCreateSem(CSEM_PUBLIC, /* Ownership - nonexclusive */ &SemHandle, /* Semaphore handle (returned) */ SEM_NAME); /* Semaphore name */ /* Set the semaphore, then start a one-shot timer */ if(!DosSemSet(SemHandle)) /* Semaphore handle */ printf("Semaphore set.\n"); if(!(rc=DosTimerAsync(TIME_INTERVAL, /* Timer interval */ SemHandle, /* Semaphore handle */ &TimerHandle))) /* Timer handle (returned) */ printf("One shot timer for %f seconds started.\n", TIME_INTERVAL/1000.0); /* Report when timer expires (other work may be done here) */ if(!DosSemWait(SemHandle, /* Semaphore handle */ SEM_INDEFINITE_WAIT)) /* Timeout period - indefinite */ printf("Time interval has elapsed.\n"); /* Start a recurring timer */ if(!(rc=DosTimerStart(TIME_INTERVAL, /* Timer interval */ SemHandle, /* Semaphore handle */ &TimerHandle))) /* Timer handle (returned) */ printf("Recurring timer with %f second interval started.\n", TIME_INTERVAL/1000.0); /* */ for(i=1; i<4; i++) if(!DosSemSetWait(SemHandle, /* Semaphore handle */ SEM_INDEFINITE_WAIT)) /* Timeout period - indefinite */ printf("Recurring timer cleared semaphore %d times.\n", i); if(!(rc=DosTimerStop(TimerHandle))) /* Timer handle */ printf("Recurring timer has been stopped.\n"); }
MASM Binding
EXTRN DosTimerStop:FAR INCL_DOSDATETIME EQU 1 PUSH WORD Handle ;Handle of the timer CALL DosTimerStop Returns WORD