The IDirectMusicTrack::InitPlay method is called when a track is ready to start playing. It returns a pointer to state data, which is sent into IDirectMusicTrack::Play and IDirectMusicTrack::EndPlay.
HRESULT InitPlay(
IDirectMusicSegmentState* pSegmentState,
IDirectMusicPerformance* pPerformance,
void** ppStateData,
DWORD dwVirtualTrackID,
DWORD dwFlags
);
If the method succeeds, the return value is S_OK.
If it fails, the method may return one of the following error values:
DMUS_E_NOT_INIT |
E_OUTOFMEMORY |
E_POINTER |
It is unnecessary for the track to store the pSegmentState, pPerformance, or dwTrackID parameters, because they are also sent into IDirectMusicTrack::Play.
The dwFlags parameter passes the flags that were handed to the performance in the call to IDirectMusicPerformance::PlaySegment. The track makes decisions on how it should perform based on the DMUS_SEGF_CONTROL and DMUS_SEGF_SECONDARY flags. For example, the tempo track automatically plays the tempo changes only if it is part of a primary segment or a secondary control segment (DMUS_SEGF_SECONDARY is not set, or DMUS_SEGF_CONTROL is set).
A track can return NULL in ppStateData.
Windows NT/2000: Requires Windows 2000.
Windows 95/98: Requires Windows 95 or later. Available as a redistributable for Windows 95.
Header: Declared in dmusici.h.