Microsoft DirectX 8.0 (C++)

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 を返す。

失敗した場合は、次のいずれかのエラー値を返す。

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
DMUS_PATH_SEGMENT_TOOL

不必要なオブジェクトをフィルタリングによって除外するときのパラメータの優先順位は次のとおりである。

  1. dwStage
  2. guidObject。この値が GUID_All_Objects でない場合、クラス識別子が guidObject に等しいオブジェクトだけが検索される。ただし、DMUS_PATH_AUDIOPATH_GRAPH などの、オブジェクトが単一のクラスに限定されるステージでは、このパラメータは無視される。
  3. dwPChannel。ステージがチャンネル固有で、この値が DMUS_PCHANNEL_ALL でない場合、そのチャンネルのオブジェクトだけが検索される。
  4. dwBuffer。このパラメータが使用されるのは、dwStage が DMUS_PATH_BUFFER、DMUS_PATH_MIXIN_BUFFER、DMUS_PATH_BUFFER_DMO、または DMUS_PATH_MIXIN_BUFFER_DMO の場合だけである。
  5. 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オーディオパスからのオブジェクトの取得