Microsoft DirectX 8.1 (C++) |
It is often necessary to retrieve an interface to a particular object within the audiopath. Common reasons to do so include the following:
Objects can be retrieved from an audiopath by calling IDirectMusicSegmentState8::GetObjectInPath on the segment state that is playing on the audiopath. You can also call IDirectMusicAudioPath8::GetObjectInPath on the audiopath object itself. The following table gives information about the parameters to these two methods.
dwStage | guidObject | dwPChannel used? |
dwIndex used? |
iidInterface (typical) |
DMUS_PATH_AUDIOPATH (*) | Ignored | No | No | IID_IDirectMusicAudioPath8 |
DMUS_PATH_AUDIOPATH_GRAPH | Ignored | No | No | IID_IDirectMusicGraph8 |
DMUS_PATH_AUDIOPATH_TOOL | Tool class ID or GUID_All_Objects to enumerate |
Yes | Yes | IID_IDirectMusicTool8 |
DMUS_PATH_BUFFER | Ignored | Yes | No, identify by dwBuffer | IID_IDirectSoundBuffer8 |
DMUS_PATH_BUFFER_DMO | DMO class ID, such as GUID_DSFX_STANDARD_GARGLE, or GUID_All_Objects to enumerate |
Yes | Yes; index of DMO within buffer | GUID for standard DMO interface, such as IID_IDirectSoundFXGargle(**) |
DMUS_PATH_MIXIN_BUFFER | Ignored | No | No, identify by dwBuffer | IID_IDirectSoundBuffer8 |
DMUS_PATH_MIXIN_BUFFER_DMO | DMO class ID, such as GUID_DSFX_STANDARD_I3DL2REVERB, or GUID_All_Objects to enumerate |
No | Yes; index of DMO within buffer | GUID for standard DMO interface, such as IID_IDirectSoundFXI3DL2Reverb(**) |
DMUS_PATH_PERFORMANCE | Ignored | No | No | IID_IDirectMusicPerformance8 |
DMUS_PATH_PERFORMANCE_GRAPH | Ignored | No | No | IID_IDirectMusicGraph8 |
DMUS_PATH_PERFORMANCE_TOOL | Tool class ID or GUID_All_Objects to enumerate |
Yes | Yes | IID_IDirectMusicTool8 |
DMUS_PATH_PORT | Port class ID or GUID_All_Objects to enumerate |
Yes | Yes | IID_IDirectMusicPort |
DMUS_PATH_PRIMARY_BUFFER | Ignored | No | No | IID_IDirectSound3DListener8 |
DMUS_PATH_SEGMENT (*) | Ignored | No | No | IID_IDirectMusicSegment8 |
DMUS_PATH_SEGMENT_GRAPH (*) | Ignored | No | No | IID_IDirectMusicGraph8 |
DMUS_PATH_SEGMENT_TOOL (*) | Tool class ID or GUID_All_Objects to enumerate |
Yes | Yes | IID_IDirectMusicTool8 |
DMUS_PATH_SEGMENT_TRACK (*) | Track class ID or GUID_All_Objects to enumerate |
No | Yes | IID_IDirectMusicTrack8 |
Notes (*) Objects in this stage cannot be retrieved by IDirectMusicAudioPath8::GetObjectInPath.
(**) The standard
For more information on the values for dwIndex when retrieving standard buffers, see Standard Audiopaths.
If you already have an interface to an effects buffer, it is also possible to retrieve a DMO interface by using IDirectSoundBuffer8::GetObjectInPath.
You can retrieve an IDirectSoundBuffer8 interface for any buffer in the audiopath, but some methods are not valid. For more information, see IDirectSoundBuffer8.