カクタスソフトウェア
カクタスソフトウェア
サウンド MIDI マルチメディア アプリケーション

フィルターを探す

フィルタグラフの中から特定のフィルターを探す手順を紹介します。

IGraphBuilderインターフェースからフィルターの列挙子IEnumFiltersインターフェースを取得します。

    IEnumFilters* pEnumFilters = NULL;
    result = m_pGB->EnumFilters(&pEnumFilters);
    if (FAILED(result))     throw result;

フィルタグラフ内のフィルターを列挙します。

    IBaseFilter* pBaseFilter = NULL;
    DWORD dwFetched;

    while ((result = pEnumFilters->Next(1L, &pBaseFilter, &dwFetched)) == S_OK)
    {
        // フィルターが列挙される
        SAFE_RELEASE(pBaseFilter);
    }

CLSIDから検索する

列挙されたフィルターについてCLSIDを比較します。IPersist::GetClassID()関数でフィルターのCLSIDを取得します。

    CLSID   clsid;              // 探したいCLSID
    CLSID   clsidGet;

    if ((result = pBaseFilter->GetClassID(&clsidGet)) == S_OK)
    {
        if (clsid == clsidGet)
        {
            // フィルターが見つかった
        }
    }

フィルター名から検索する

列挙されたフィルターについてフィルター名を比較します。IBaseFilter::QueryFilterInfo()関数でフィルターのFILTER_INFOを取得します。

    LPCTSTR     filterName;     // 探したいフィルター名
    FILTER_INFO info;

    if ((result = pBaseFilter->QueryFilterInfo(&info)) == S_OK)
    {
        if (! wcscmp(filterName, info.achName))
        {
            // フィルターが見つかった
        }
    }

最後にフィルターの列挙子をリリースします。

    SAFE_RELEASE(pEnumFilters);

ドキュメントの先頭へ

カクタスソフトウェア 技術協力 資料室 資料室の広場 SourceForge.jp お問い合わせ