次の方法で共有


ポーズ

すべてのフィルタ状態の変更はフィルタのロックを保持する必要がある。Pause メソッドで、フィルタが必要とするリソースを作成する。

HRESULT CMyFilter::Pause()
{
    CAutoLock lock_it(m_pLock);

    /* フィルタ リソースを作成する。 */

    return CBaseFilter::Pause();
}

CBaseFilter::Pause メソッドはフィルタに正しい状態を設定し (State_Paused)、フィルタで接続されているすべてのピンの CBasePin::Active メソッドを呼び出す。Active メソッドは、フィルタがアクティブになったことをピンに通知する。ピンがリソースを作成する場合、次のように Active メソッドをオーバーライドする。

HRESULT CMyInputPin::Active()
{
    // ここではフィルタ ロックを保持する必要はない。Pause で既に保持されている。

    /* ピン リソースを作成する。 */

    return CBaseInputPin::Active()
}