Jump to content

DosTimerStop

From EDM2
Revision as of 22:49, 15 September 2017 by Martini (talk | contribs)
Legacy Function Warning
It is recommended to use a newer replacement for this function.
Replacement: DosStopTimer
Remarks: This function was renamed to DosStopTimer on OS/2 2.0.

This call stops a periodic interval timer started by DosTimerStart, or an asynchronous timer started by DosTimerAsync.

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

Related Functions