Status „Wird angehalten“
Alle Filterzustandsä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 fest (State _ Paused) 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 geworden ist. 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()
}