IDirectMusicAudioPath8::GetObjectInPath
オーディオパス内のオブジェクトに対してインターフェイスを取得する。
RESULT GetObjectInPath(
DWORD dwPChannel,
DWORD dwStage,
DWORD dwBuffer,
REFGUID guidObject,
DWORD dwIndex,
REFGUID iidInterface,
void ** ppObject
);
パラメータ
- dwPChannel
- 検索するパフォーマンス チャンネルまたはすべてのチャンネルを検索する DMUS_PCHANNEL_ALL。最初のチャンネルは 0 番になる。「注意」を参照すること。
- dwStage
- パスのステージ。次のいずれかの値を指定する。
- DMUS_PATH_AUDIOPATH_GRAPH
- オーディオパス ツールグラフを取得する。存在しなければ作成される。
- DMUS_PATH_AUDIOPATH_TOOL
- オーディオパス ツールグラフからツールを取得する。
- DMUS_PATH_BUFFER
- DirectSound バッファを取得する。
- DMUS_PATH_BUFFER_DMO
- バッファの DMO を取得する。DMO インターフェイスの詳細については、「IDirectSoundBuffer8::GetObjectInPath」を参照すること。
- DMUS_PATH_MIXIN_BUFFER
- グローバル ミックスイン バッファを取得する。
- DMUS_PATH_MIXIN_BUFFER_DMO
- グローバル ミックスイン バッファ内の DMO を取得する。
- DMUS_PATH_PERFORMANCE
- パフォーマンスを取得する。
- DMUS_PATH_PERFORMANCE_GRAPH
- パフォーマンス ツールグラフを取得する。存在しなければ作成される。
- DMUS_PATH_PERFORMANCE_TOOL
- パフォーマンス ツールグラフからツールを取得する。
- DMUS_PATH_PORT
- シンセサイザを取得する。
- DMUS_PATH_PRIMARY_BUFFER
- プライマリ バッファを取得する。
- dwBuffer
- dwStage が DMUS_PATH_BUFFER_DMO または DMUS_PATH_MIXIN_BUFFER_DMO の場合、DMO が常駐するバッファのインデックス。dwStage が DMUS_PATH_BUFFER または DMUS_PATH_MIXIN_BUFFER の場合、バッファのインデックス。それ以外の場合、0 でなければならない。
- guidObject
- オブジェクトのクラス識別子、または任意のクラスのオブジェクトを検索する GUID_All_Objects。dwStage によって指定されたステージに存在するオブジェクトが単一のクラスに限定されている場合は無視される。このパラメータは GUID_NULL に設定できる。
- dwIndex
- 一致するオブジェクトのリストに含まれるオブジェクトのインデックス。0 に設定して、最初の適合オブジェクトを検索する。dwStage が DMUS_PATH_BUFFER または DMUS_PATH_MIXIN_BUFFER の場合、このパラメータは無視され、dwBuffer によってバッファ インデックスが指定される。
- iidInterface
- IID_IDirectMusicTool など、目的のインターフェイスの識別子。
- ppObject
- 要求されたインターフェイスへのポインタを受け取る変数のアドレス。
戻り値
成功した場合は S_OK を返す。
失敗した場合は、次のいずれかのエラー値を返す。
注意
チャンネル固有でないステージについては、dwPChannel の値は 0 に設定しなければならない。次のステージのオブジェクトはチャンネル固有なので、dwPChannel にチャンネル番号または DMUS_PCHANNEL_ALL を設定して取得できる。
DMUS_PATH_AUDIOPATH_TOOL
DMUS_PATH_BUFFER
DMUS_PATH_BUFFER_DMO
DMUS_PATH_PERFORMANCE_TOOL
DMUS_PATH_PORT
DMUS_PATH_SEGMENT_TOOL
不必要なオブジェクトをフィルタリングによって除外するときのパラメータの優先順位は次のとおりである。
- dwStage。
- guidObject。この値が GUID_All_Objects でない場合、クラス識別子が guidObject に等しいオブジェクトだけが検索される。ただし、DMUS_PATH_AUDIOPATH_GRAPH などの、オブジェクトが単一のクラスに限定されるステージでは、このパラメータは無視される。
- dwPChannel。ステージがチャンネル固有で、この値が DMUS_PCHANNEL_ALL でない場合、そのチャンネルのオブジェクトだけが検索される。
- dwBuffer。このパラメータが使用されるのは、dwStage が DMUS_PATH_BUFFER、DMUS_PATH_MIXIN_BUFFER、DMUS_PATH_BUFFER_DMO、または DMUS_PATH_MIXIN_BUFFER_DMO の場合だけである。
- dwIndex。
一致するオブジェクトが見つかっても、iidInterface で指定されているインターフェイスが見つからない場合、このメソッドは失敗する。
次のサンプル コードは、オーディオパス内のバッファを列挙する方法を示している。_stprintf 関数は Tchar.h で宣言される。
void DumpAudioPathBuffers(
IDirectMusicAudioPath *pDirectMusicAudioPath)
{
TCHAR tcstrText[256];
DWORD dwBuffer = 0;
IDirectSoundBuffer *pDirectSoundBuffer;
while(S_OK == pDirectMusicAudioPath->GetObjectInPath(
DMUS_PCHANNEL_ALL, DMUS_PATH_BUFFER, dwBuffer,
GUID_NULL, 0, IID_IDirectSoundBuffer,
(void**) &pDirectSoundBuffer))
{
_stprintf( tcstrText, _T("Found buffer %x.\n"),
pDirectSoundBuffer);
OutputDebugString( tcstrText );
dwBuffer++;
pDirectSoundBuffer->Release();
}
if( dwBuffer == 0 )
{
OutputDebugString( _T("No buffers in audiopath.\n") );
}
}
ヘッダー : dmusici.h で宣言。
参照
IDirectMusicSegmentState8::GetObjectInPath、オーディオパスからのオブジェクトの取得