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 または DMUS_PATH_MIXIN_BUFFER の場合)、または DMO が存在するバッファのインデックス (dwStage が DMUS_PATH_BUFFER_DMO または DMUS_PATH_MIXIN_BUFFER_DMO の場合)。
guidObject
オブジェクトのクラス識別子、または任意のクラスのオブジェクトを検索する GUID_All_Objects。dwStage で指定するステージに存在するオブジェクトが単一のクラスに限定される場合、このパラメータは無視される。このパラメータには GUID_NULL を設定できる。
dwIndex
一致するオブジェクトのリストにおけるオブジェクトのインデックス。0 に設定して、最初の適合オブジェクトを検索する。dwStage が DMUS_PATH_BUFFER または DMUS_PATH_MIXIN_BUFFER の場合は、このパラメータは無視され、バッファ インデックスは dwBuffer で指定する。
iidInterface
IID_IDirectMusicTool など、目的のインターフェイスの識別子。
ppObject
要求したインターフェイスへのポインタを受け取る変数のアドレス。
戻り値
成功した場合は S_OK を返す。
失敗した場合は、次の表に示すエラー値のいずれかを返す。
リターン コード |
DMUS_E_NOT_FOUND |
E_INVALIDARG |
E_OUTOFMEMORY |
E_NOINTERFACE |
E_POINTER |
注意
チャンネル固有でないステージについては、dwPChannel の値を 0 に設定しなければならない。以下のステージのオブジェクトはチャンネル固有なので、dwPChannel にチャンネル番号または DMUS_PCHANNEL_ALL を設定して取得できる。
DMUS_PATH_AUDIOPATH_TOOL
DMUS_PATH_BUFFER
DMUS_PATH_BUFFER_DMO
DMUS_PATH_PERFORMANCE_TOOL
DMUS_PATH_PORT
不必要なオブジェクトをフィルタリングによって除外するときのパラメータの優先順位は次のとおりである。
- 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 で指定されているインターフェイスが見つからない場合、このメソッドは失敗する。
次の関数の例は、オーディオパス内のバッファを列挙する方法を示している。
void DumpAudioPathBuffers(
IDirectMusicAudioPath *pDirectMusicAudioPath)
{
DWORD dwBuffer = 0;
IDirectSoundBuffer *pDirectSoundBuffer;
while(S_OK == pDirectMusicAudioPath->GetObjectInPath(
DMUS_PCHANNEL_ALL, DMUS_PATH_BUFFER, dwBuffer,
GUID_NULL, 0, IID_IDirectSoundBuffer,
(void**) &pDirectSoundBuffer))
{
// pDirectSoundBuffer について何らかの処理を行う。
// . . .
dwBuffer++;
pDirectSoundBuffer->Release();
}
}
要件
** ヘッダー:**dmusici.h で宣言。
参照