다음을 통해 공유


일시 중지

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

모든 필터 상태 변경 내용에는 필터 잠금이 있어야 합니다. Pause 메서드에서 필터에 필요한 리소스를 만듭니다.

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

    /* Create filter resources. */

    return CBaseFilter::Pause();
}

CBaseFilter::P ause 메서드는 필터(State_Paused)에서 올바른 상태를 설정하고 필터의 연결된 모든 핀에서 CBasePin::Active 메서드를 호출합니다. Active 메서드는 필터가 활성화되었음을 핀에 알릴 수 있습니다. 핀이 리소스를 만드는 경우 다음과 같이 Active 메서드를 재정의합니다.

HRESULT CMyInputPin::Active()
{
    // You do not need to hold the filter lock here. It is already held in Pause.

    /* Create pin resources. */

    return CBaseInputPin::Active()
}