共用方式為


傳遞資料流程結尾

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

當輸入針腳收到串流結束通知時,它會傳播呼叫下游。 從此輸入針腳接收資料的任何下游篩選,也應該取得串流結束通知。 同樣地,採用串流鎖定,而不是篩選鎖定。 如果篩選有尚未傳遞的暫止資料,篩選準則應該立即傳遞,再傳送串流結束通知。 它不應該在資料流程結尾之後傳送任何資料。

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;
}

CBaseOutputPin::D eliverEndOfStream方法會在下游輸入針腳上呼叫IPin::EndOfStream

執行緒和關鍵區段