Bereitstellen des Datenstromendes

Wenn der Eingabepin eine Benachrichtigung zum Ende des Datenstroms empfängt, wird der Aufruf nachgeschaltet. Alle Downstreamfilter, die Daten von diesem Eingabepin empfangen, sollten auch die Benachrichtigung zum Streamende erhalten. Übernehmen Sie erneut die Streamingsperre und nicht die Filtersperre. Wenn der Filter ausstehende Daten auflistet, die noch nicht übermittelt wurden, sollte der Filter sie jetzt ausliefern, bevor er die Benachrichtigung zum Streamende sendet. Es sollten keine Daten nach dem Ende des Streams gesendet werden.

HRESULT CMyInputPin::EndOfStream()
{
    CAutoLock lock_it(&m_csReceive);

    /* If the pin has not delivered all of the data in the stream 
       (based on what it received previously), do so now.  */

    // Propagate EndOfStream call downstream, via your output pin(s).
    for (each output pin)
    {    
        hr = pOutputPin->DeliverEndOfStream();
    }
    return S_OK;
}

Die CBaseOutputPin::D eliverEndOfStream-Methode ruft IPin::EndOfStream für den Downstreameingabepin auf.

Threads und kritische Abschnitte