ストリーム終了通知の送信
入力ピンがストリーム終了通知を受信すると、その呼び出しをダウンストリーム方向に伝達する。この入力ピンからデータを受信するダウンストリーム フィルタはストリーム終了通知も受け取る必要がある。ここでも、フィルタ ロックではなく、ストリーミング ロックを取る。まだ送信されていないペンディング状態のデータがフィルタにある場合、フィルタはストリーム終了通知を送信する前にすぐそのデータを送信する必要がある。ストリームの終了後、データを送信しないこと。
HRESULT CMyInputPin::EndOfStream()
{
CAutoLock lock_it(&m_csReceive);
/* ピンがストリームのすべてのデータを送信していない場合
(以前受信したデータに基づく)、ここで送信する。 */
// 出力ピンを介してダウンストリーム方向に EndOfStream 呼び出しを伝達する。
for (各出力ピン)
{
hr = pOutputPin->DeliverEndOfStream();
}
return S_OK;
}
CBaseOutputPin::DeliverEndOfStream メソッドはダウンストリーム入力ピンの IPin::EndOfStream を呼び出す。