Freigeben über


Status „Wird angehalten“

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Alle Filterstatusänderungen müssen die Filtersperre enthalten. Erstellen Sie in der Pause-Methode alle Ressourcen, die der Filter benötigt:

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

    /* Create filter resources. */

    return CBaseFilter::Pause();
}

Die CBaseFilter::P ause-Methode legt den richtigen Zustand für den Filter (State_Paused) fest und ruft die CBasePin::Active-Methode für jeden verbundenen Pin im Filter auf. Die Active-Methode informiert den Pin darüber, dass der Filter aktiv wurde. Wenn der Pin Ressourcen erstellt, überschreiben Sie die Active-Methode wie folgt:

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