The following code illustrates how to report events or sync pulses to the Sync/Stream Manager.
#include "os2.h" #include "os2me.h" ULONG ulRC; /* Error return code. * / HID hidSource; /* Source handler ID. */ TIME_EVCB timeevcb; /* Cue point event control block. */ HEVENT hevent; /* Time event handle. */ HSTREAM hstream; /* Stream handle. */ HID hid; /* Handler ID. */ PARM_EVENT parm_event; /* Report event parameter block. */ MMTIME mmtimeCurrent; /* Current stream time. */ PSMHFN SMHEntryPoint; /* Pointer to SMH entry point. */ /*----------------------------------------------------------------------*/ /* Report an event. */ /*----------------------------------------------------------------------*/ parm_event.ulFunction = SMH_REPORTEVENT; /* Set function. */ parm_event.hid = hidSource; /* Source handler ID. */ parm_event.hevent = hevent; /* Event handle. */ parm_event.pevcbEvent = (PEVCB) &timeevcb; /* Pointer to Time EVCB. */ timeevcb.ulType = EVENT_CUE_TIME; /* Set event type. */ timeevcb.hstream = hstream; /* Set stream handle. */ timeevcb.hid = hid; /* Set handler ID. */ timeevcb.ulStatus = 0; /* No status. */ timeevcb.mmtimeStream = mmtimeCurrent; /* Set current time. */ if (ulRC = SMHEntryPoint (&parm_event)) return(ulRC); /* Error! */