Condividi tramite


Sospensione

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Tutte le modifiche dello stato del filtro devono contenere il blocco del filtro. Nel metodo Pause creare tutte le risorse necessarie per il filtro:

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

    /* Create filter resources. */

    return CBaseFilter::Pause();
}

Il metodo CBaseFilter::P ause imposta lo stato corretto sul filtro (State_Paused) e chiama il metodo CBasePin::Active su ogni pin connesso nel filtro. Il metodo Active informa il pin che il filtro è diventato attivo. Se il pin crea risorse, eseguire l'override del metodo Active , come indicato di seguito:

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()
}