A stream handler can use this message to report events, namely, cue points, stream errors, implicit and explicit events, and sync pulses to the Sync/Stream Manager. Stream handlers can detect the following events and report them to the Sync/Stream Manager to be passed back to the application.
The Sync/Stream Manager detects the following events and notifies the application directly:
Each stream handler might or might not be able to generate and receive synchronization pulses. This capability for each stream handler is defined in the SPCBs for that stream handler.
Synchronization pulses are passed as an event from the master stream handler. Synchronization pulses are distributed by the Sync/Stream Manager based on the synchronization relationship of the programmed stream. This distribution is effective for both DLL and device driver slave stream handlers. Device driver stream handlers receive sync pulses by way of their sync pulse SYNC_EVCB. Each slave stream handler must regularly update the sync pulse SYNC_EVCB with its calculated stream time. The Sync/Stream Manager checks this slave-handler stream time against the master stream time and decides whether to send a sync pulse to this handler.
The device driver stream handler checks for sync pulses from the Sync/Stream Manager by polling a flag in the sync-pulse SYNC_EVCB. The Sync/Stream Manager sets the flag to indicate a sync pulse and updates the current master stream time. Typically, the device driver slave stream handler polls the flag once during interrupt processing and adjusts stream usage accordingly.
DLL stream handlers receive sync pulses in one of two ways: either by registering a semaphore with the Sync/Stream Manager, or by the same method as the Sync/Stream Manager uses for device driver stream handler.