다음을 통해 공유


일시 중지

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

모든 필터 상태 변경은 필터 잠금을 유지해야 합니다. Pause 메서드에서 필터에 필요한 리소스를 만듭니다.

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

    /* Create filter resources. */

    return CBaseFilter::Pause();
}

CBaseFilter::Pause 메서드는 필터(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()
}