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